1. 程式人生 > >opencv腐蝕、膨脹、開閉運算

opencv腐蝕、膨脹、開閉運算

腐蝕和膨脹是最基本的形態學運算。
腐蝕和膨脹是針對白色部分(高亮部分)而言的。
膨脹就是對影象高亮部分進行“領域擴張”,效果圖擁有比原圖更大的高亮區域;腐蝕是原圖中的高亮區域被蠶食,效果圖擁有比原圖更小的高亮區域。
膨脹就是求區域性最大值的操作,從影象直觀看來,就是將影象光亮部分放大,黑暗部分縮小。
閉運算是先膨脹後腐蝕的過程,其功能是用來填充物體內細小空洞、 閉操作可以消弭狹窄的間斷,消除小的孔洞。 同時不明顯改變不明顯改變其面積。
先腐蝕後膨脹的過程就稱為開運算。開操作可以平滑物體輪廓,斷開狹窄的間斷和消除細小的突出物。
孔洞指的是黑的,突出物和小物體指的是白的

#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); }