OpenCV 实现图像去阴影


实现思路:

  1. 图将转为灰度图
  2. 将灰度图进行闭运算操作
  3. 闭运算后的图减去原灰度图再取反
  4. 将取反后的图使用归一化将白色背景修改贴近原图

opencv实现:

 1     Mat src = imread("D:/opencv练习图片/去阴影.png");  2     imshow("原图", src);  3     //1.将图像转为灰度图
 4  Mat gray;  5  cvtColor(src, gray, COLOR_BGR2GRAY);  6     //定义腐蚀和膨胀的结构化元素和迭代次数
 7     Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));  8     int iteration = 9;  9     //2.将灰度图进行闭运算操作
10  Mat closeMat; 11     morphologyEx(gray, closeMat, MORPH_CLOSE, element, Point(-1, -1), iteration); 12     imshow("闭运算", closeMat); 13     //4.闭运算后的图减去原灰度图再进行取反操作
14     Mat calcMat = ~(closeMat - gray); 15     imshow("calc", calcMat); 16     //5.使用规一化将原来背景白色的改了和原来灰度图差不多的灰色
17  Mat removeShadowMat; 18     normalize(calcMat, removeShadowMat, 0, 200, NORM_MINMAX); 19     imshow("dst", removeShadowMat);

原图:

 

 😃我们可以看到 这里的形态学的妙用: 

在对原图进行闭运算以后,可以发现我们就得到了只有阴影的图像。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM