图像处理|OpenCV-形态学处理-morphologyEx

OpenCV提供的形态学处理函数,主要有三个参数:
1:结构元:影响结构元的除了形状就是结构元的半径
2:形态学处理类型
3:迭代次数
【图像处理|OpenCV-形态学处理-morphologyEx】基于这三个点我们通过导航条调节这三个参数,代码如下:

#include #include #include using namespace cv; #include using namespace std; Mat img; //输入图像 Mat dst; //输出图像 Mat element; //结构元 //结构元的半径 int r = 1; int MAX_r = 20; //形态学处理的次数 int iter = 1; int MAX_ITER = 30; //形态学处理类型 /* enum MorphTypes{ MORPH_ERODE= 0, MORPH_DILATE= 1, MORPH_OPEN= 2, MORPH_CLOSE= 3, MORPH_GRADIENT = 4, MORPH_TOPHAT= 5, MORPH_BLACKHAT = 6, MORPH_HITMISS= 7 }; */ int morphType = 0; int MAX_MORPHTYPE = 6; //窗口 string windowName = "形态学处理"; //回调函数 void callback(int, void*); int main(int argc, char*argv[]) { //输入图像 img = imread(argv[1], IMREAD_ANYCOLOR); if (!img.data) return -1; //窗口 namedWindow(windowName, 1); createTrackbar("半径:", windowName, &r, MAX_r, callback); createTrackbar("次数:", windowName, &iter, MAX_ITER, callback); createTrackbar("类型:", windowName, &morphType, MAX_MORPHTYPE, callback); callback(0, 0); waitKey(0); return 0; } //回调函数 void callback(int, void*) { //结构元 element = getStructuringElement(MORPH_ELLIPSE, Size(2 * r + 1, 2 * r + 1), Point(-1, -1)); //形态学处理 morphologyEx(img, dst, morphType, element, Point(-1, -1), iter); //保存形态处理的结果 //imwrite("mor.jpg", dst); imshow(windowName, dst); }


图像处理|OpenCV-形态学处理-morphologyEx
文章图片

    推荐阅读