膨胀与腐蚀
形态学的四个基本操作:膨胀、腐蚀、开、闭。
膨胀:图像A和结构元素B,结构B在A上移动,其中B定义其中心为锚点,计算B覆盖下A的最大像素值用来替换锚点的像素,其中B作为结构体可以是任意形状。(最大值)
腐蚀:不同是以最小值替换锚点重叠下图像的像素值。(最小值)
代码如下:
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
Mat src, dst;
int element_size = 3;
int max_size = 21;
void CallBack_Demo(int, void*);
int main(int argc, char** argv) {
src = imread("002.jpg"); //D:\\sougou\\image\\1.jpg
if (!src.data) {
printf("could not load image...");
return -1;
}
char input_image[] = "input image";
namedWindow(input_image,WINDOW_AUTOSIZE);
imshow(input_image, src);
//char output_image[] = "output image";
namedWindow("output_image", WINDOW_AUTOSIZE);
createTrackbar("Element Size:", "output_image", &element_size, max_size, CallBack_Demo);
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));
//dilate(src, dst, structureElement, Point(-1,-1), 1); //膨胀 变亮
erode(src, dst, structureElement); //腐蚀 变黑
imshow("output_image", dst);
return;
}
膨胀效果如下:
腐蚀效果如下: