一、形態學其他操作(用的不多,如果忘了也可以通過膨脹腐蝕得到相同效果)
1.開運算
2.閉運算
3.形態學梯度
4.頂帽
5.黑帽
1 #include "opencv2/opencv.hpp" 2 using namespace cv; 3 4 void main() 5 { 6 Mat srcImg = imread("E://1.jpg"); 7 Mat dstImg; 8 Mat element = getStructuringElement(MORPH_RECT, Size(5, 5)); 9 10 //morphologyEx(srcImg, dstImg, MORPH_OPEN, element); //開運算 11 //morphologyEx(srcImg, dstImg, MORPH_CLOSE, element); //閉運算 12 //morphologyEx(srcImg, dstImg, MORPH_GRADIENT, element); //形態學梯度運算 13 //morphologyEx(srcImg, dstImg, MORPH_TOPHAT, element); //頂帽運算 14 morphologyEx(srcImg, dstImg, MORPH_BLACKHAT, element); //黒帽運算 15 16 imshow("src", srcImg); 17 imshow("dst", dstImg); 18 waitKey(0); 19 }
二、小應用(找出差異,對差異進行操作)
1 #include "opencv2/opencv.hpp" 2 using namespace cv; 3 4 void main() 5 { 6 Mat img1=imread("E://A.jpg"); 7 Mat img2=imread("E://B.jpg"); 8 Mat diff; 9 absdiff(img1,img2,diff);//用這個做減法可以避免出現負值=0的情況 10 imshow("img1",img1); 11 imshow("img2",img2); 12 imshow("diff",diff); 13 14 Mat gray; 15 cvtColor(diff,gray,COLOR_BGR2GRAY);//轉為灰度圖 16 //adaptiveThreshold(gray,gray,255,ADAPTIVE_THRESH_GAUSSIAN_C,THRESH_BINARY_INV,15,3);//自適應閾值有點不懂 17 threshold(gray,gray,5,255,THRESH_BINARY); 18 imshow("threshold",gray); 19 20 //進行形態學操作 21 Mat element=getStructuringElement(MORPH_RECT,Size(3,3));//定義結構元素 22 morphologyEx(gray,gray,MORPH_OPEN,element);//開運算 23 medianBlur(gray,gray,9);//中值濾波 24 dilate(gray,gray,element); 25 imshow("dst",gray); 26 27 waitKey(0); 28 }