OpenCV-形态学处理-morphologyEx

来源:互联网 发布:剑侠情缘网络单机版 编辑:程序博客网 时间:2024/06/09 14:25

OpenCV提供的形态学处理函数,主要有三个参数:

1:结构元:影响结构元的除了形状就是结构元的半径

2:形态学处理类型

3:迭代次数

基于这三个点我们通过导航条调节这三个参数,代码如下:

#include<opencv2/core.hpp>#include<opencv2/imgproc.hpp>#include<opencv2/highgui.hpp>using namespace cv;#include<string>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);}


原创粉丝点击