//先定义结构体
getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1));
参数1:结构体形状MORPH_RECT\ MORPH_CROSS\ MORPH_ELLIPSE
参数2:大小,只能是正奇数
参数3:锚点位置
//膨胀,就是使用自定义的结构体对图像扫图,每个结构体有一个锚点,Point(-1,-1)将锚点定义在中心。
//膨胀就是使锚点对应的像素值为结构体覆盖下的像素值的最大值
dilate(src, dst, structureElement, Point(-1, -1), 1);
dilate(input,output,结构体形状,锚点中心);
//腐蚀,就是使用自定义的结构体对图像扫图,每个结构体有一个锚点,Point(-1,-1)将锚点定义在中心。
//腐蚀就是使锚点对应的像素值为结构体覆盖下的像素值的最小值
erode(src, dst, structureElement);
//程序可动态膨胀腐蚀,,使用 createTrackbar
//注意此处要新建窗口,与腐蚀膨胀的图片同名
namedWindow("xingtaixue", WINDOW_AUTOSIZE);
createTrackbar("Element Size", "xingtaixue", &element_size, max_size, CallBack_Demo);
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
Mat src, dst;
int element_size = 3;
int max_size = 21;
void CallBack_Demo(int, void*);
int main()
{
src = imread("C:\\Users\\Administrator\\Pictures\\Saved Pictures\\timg6ZAGKYHR.jpg");
if (src.empty())
{
printf("ould not find image \n");
return -1;
}
namedWindow("opencv set up demo", WINDOW_AUTOSIZE);
imshow("opencv set up demo", src);
namedWindow("xingtaixue", WINDOW_AUTOSIZE);
createTrackbar("Element Size", "xingtaixue", &element_size, max_size, CallBack_Demo);
CallBack_Demo(0, 0);
waitKey(0);
return 1;
}
void CallBack_Demo(int, void*) {
int s = element_size * 2 + 1;
//结构元素
Mat structureElement = getStructuringElement(MORPH_RECT, Size(s, s), Point(-1, -1));
//膨胀
dilate(src, dst, structureElement, Point(-1, -1), 1);
erode(src, dst, structureElement);
imshow("xingtaixue", dst);
return;
}