OpenCV之影象開運算(C++實現)
阿新 • • 發佈:2020-12-21
技術標籤:C++opencv影象處理opencv計算機視覺c++
開運算,其實就是先腐蝕後膨脹的過程,其數學表示式為:
dst = open(src, element) = dilate(erode(src, element))
開運算可以用來消除小物體,在纖細點處分離物體,並且在平滑較大物體邊界的同時不改變其面積。
實現影象開運算有兩種方法,如下程式碼示例:
#include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> using namespace std; using namespace cv; int main() { Mat srcImage; srcImage = imread("/Users/dwz/Desktop/cpp/b.jpg"); Mat element; element = getStructuringElement(MORPH_RECT, Size(15, 15)); Mat dstImage; // 第一種實現方法 morphologyEx(srcImage, dstImage, MORPH_OPEN, element); // 第二種實現方法 // erode(srcImage, dstImage, element); // dilate(dstImage, dstImage, element); imwrite("open.jpg", dstImage); return 0; }
輸入影象:
輸出: