1. 程式人生 > 其它 >OpenCV之影象開運算(C++實現)

OpenCV之影象開運算(C++實現)

技術標籤: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;
}

輸入影象:

輸出: