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