具体代码如下:
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; Mat src, dst; char OUTPUT_WIN[] = "output image"; int element_size = 3; int max_size = 21; void CallBack_Demo(int, void*); int main(int argc, char** argv) { src = imread("L:/4.jpg"); if (!src.data) { printf("could not load image... "); return -1; } namedWindow("input image", CV_WINDOW_AUTOSIZE); imshow("input image", src); namedWindow(OUTPUT_WIN, CV_WINDOW_AUTOSIZE); createTrackbar("Element Size :", OUTPUT_WIN, &element_size, max_size, CallBack_Demo); //条形拖动窗口参数:1.图像名 2.图像窗口 3.最小精度指针 4.最大范围 5.函数名 CallBack_Demo(0, 0); waitKey(0); return 0; } //膨胀与腐蚀函数 void CallBack_Demo(int, void*) { int s = element_size * 2 + 1; Mat structureElement = getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1)); //getStructuringElement参数:1.形状矩形 2.形态学锚点尺寸 3.默认Point(-1, -1)锚点中心 dilate(src, dst, structureElement, Point(-1, -1), 1); //人物的膨胀的函数方法 //erode(src, dst, structureElement); //人物的腐蚀的函数方法 imshow(OUTPUT_WIN, dst); return; }
一、图像的膨胀:
二、图像的腐蚀: