opencv腐蝕、膨脹、開閉運算
阿新 • • 發佈:2018-11-04
腐蝕和膨脹是最基本的形態學運算。
腐蝕和膨脹是針對白色部分(高亮部分)而言的。
膨脹就是對影象高亮部分進行“領域擴張”,效果圖擁有比原圖更大的高亮區域;腐蝕是原圖中的高亮區域被蠶食,效果圖擁有比原圖更小的高亮區域。
膨脹就是求區域性最大值的操作,從影象直觀看來,就是將影象光亮部分放大,黑暗部分縮小。
閉運算是先膨脹後腐蝕的過程,其功能是用來填充物體內細小空洞、 閉操作可以消弭狹窄的間斷,消除小的孔洞。 同時不明顯改變不明顯改變其面積。
先腐蝕後膨脹的過程就稱為開運算。開操作可以平滑物體輪廓,斷開狹窄的間斷和消除細小的突出物。
孔洞指的是黑的,突出物和小物體指的是白的
#include<opencv2\opencv.hpp>
#include<opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;
int main()
{
Mat img = imread(路徑名);
namedWindow("原始圖", WINDOW_NORMAL);
imshow("原始圖", img);
Mat out;
//獲取自定義核
Mat element = getStructuringElement(MORPH_RECT, Size(15, 15)); //第一個引數MORPH_RECT表示矩形的卷積核,當然還可以選擇橢圓形(MORRPH_ELLIPSE)、交叉型(MORPH_CROSS)的
//膨脹操作
dilate(img, out1, element);
//腐蝕操作
erode(img,out2,element);
//閉運算
morphologyEx(img,closedImg,CV_MOP_CLOSE,element);
//開運算
morphologyEx(img,openImg,CV_MOP_OPEN,element);
namedWindow("處理後", WINDOW_NORMAL);
imshow("處理後", out);
waitKey(0);
}