全国服务热线:

15861139266

Opencv去除图像阴影,苏州机器视觉培训,苏州工业机器人培训,苏州上位机培训
发布时间:2024-03-28 15:41:31 点击次数:232

前言

浏览OpenCV相关文章时看到了《基于OpenCV的图像阴影去除》,源码也是用pytyon实现的,分析了一下其原理,这篇我们用OpenCV的C++版来实现一下。


实现思路:

图将转为灰度图


将灰度图进行闭运算操作


闭运算后的图减去原灰度图再取反


将取反后的图使用归一化将白色背景修改贴近原图


关注机器视觉课堂持续学习


opencv实现:

    Mat src = imread("D:/opencv练习图片/去阴影.png");

    imshow("原图", src);

    //1.将图像转为灰度图

    Mat gray;

    cvtColor(src, gray, COLOR_BGR2GRAY);

    //定义腐蚀和膨胀的结构化元素和迭代次数

    Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));

    int iteration = 9;

    //2.将灰度图进行闭运算操作

    Mat closeMat;

    morphologyEx(gray, closeMat, MORPH_CLOSE, element, Point(-1, -1), iteration);

    imshow("闭运算", closeMat);

    //4.闭运算后的图减去原灰度图再进行取反操作

    Mat calcMat = ~(closeMat - gray);

    imshow("calc", calcMat);

    //5.使用规一化将原来背景白色的改了和原来灰度图差不多的灰色

    Mat removeShadowMat;

    normalize(calcMat, removeShadowMat, 0, 200, NORM_MINMAX);

    imshow("dst", removeShadowMat);

原图:image.png                                                                  

 去阴影:   image.png                                                                    



 

立即咨询
  • 品质服务

    服务贴心周到

  • 快速响应

    全天24小时随时沟通

  • 专业服务

    授权率高,保密性强

  • 完善售后服务

    快速响应需求,及时性服务

直播课程
软件开发基础课程
上位机软件开发课
机器视觉软件开发课
专题课
联系方式
电话:15861139266
邮箱:75607082@qq.com
地址:苏州吴中区木渎镇尧峰路69号
关注我们

版权所有:江苏和讯自动化设备有限公司所有 备案号:苏ICP备2022010314号-1

技术支持: 易动力网络