OpenCV數學形態學

原文發表於個人博客Eajack Blog

PS:題圖為腐蝕運算結果…

Series:OpenCV學習筆記數學形態學

/*Author:EajackDate:2017/8/8Series:OpenCV筆記Function:OpenCV數學形態學KeyPoints: dilate(srcImg,dstImg,element); erode(srcImg,dstImg,element); morphologyEx(srcImg,dstImg,MORPH_OPEN,element); // MORPH_CLOSE,MORPH_GRADIENT,MORPH_TOPHAT,MORPH_BLACKHAT //*/#include <stdio.h>#include <iostream>#include <vector>#include <opencv2/opencv.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>using namespace cv;using namespace std;int main(){ Mat frame =imread("photo.jpg"); Mat dilate_frame,erode_frame; Mat open_frame,close_frame,grad_frame,top_frame,black_frame; Mat flood_frame; Mat element = getStructuringElement(MORPH_RECT,Size(10,10)); imshow("原圖",frame); // start dilate(frame,dilate_frame,element); imshow("膨脹操作",dilate_frame); erode(frame,erode_frame,element); imshow("腐蝕操作",erode_frame); morphologyEx(frame,open_frame,MORPH_OPEN,element); imshow("開運算",open_frame); morphologyEx(frame,close_frame,MORPH_CLOSE,element); imshow("閉運算",close_frame); morphologyEx(frame,grad_frame,MORPH_GRADIENT,element); imshow("梯度運算",grad_frame); morphologyEx(frame,top_frame,MORPH_TOPHAT,element); imshow("頂帽運算",top_frame); morphologyEx(frame,black_frame,MORPH_BLACKHAT,element); imshow("黑帽運算",black_frame); Rect buffer; floodFill(frame,Point(50,300),Scalar(155,255,55), &buffer,Scalar(20,20,20),Scalar(20,20,20)); imshow("漫水填充",frame); imwrite("dilate.jpg",dilate_frame); imwrite("erode.jpg",erode_frame); imwrite("open.jpg",open_frame); imwrite("close.jpg",close_frame); imwrite("grad.jpg",grad_frame); imwrite("top.jpg",top_frame); imwrite("black.jpg",black_frame); imwrite("floodfill.jpg",frame); waitKey(0);}

推薦閱讀:

對於 C++ 的疑惑?
C++的std::thread是怎麼進行參數傳遞的?
如何評價可以自動更換 User-Agent 的爬蟲設計?
為什麼儘管 C++ 早就有了很多現代功能,但是卻長期給人原始的印象呢?

TAG:OpenCV | 圖像處理 | C |