亲宝软件园·资讯

展开

C++ opencv图像腐蚀膨胀

浅念念52 人气:0

1 概念

1.1 腐蚀跟膨胀是最基本的形态学运算

1.2 腐蚀跟膨胀是对图像的白色的部分(亮光部分)进行操作

1.3 腐蚀是对亮光部分进行腐蚀 拥有比原图更小的亮光部分

1.4 膨胀是对亮光部分进行膨胀 拥有比原图更大的亮光部分 

这里有一个误区 

假如说在图片上的一个字,很多人都会认为膨胀是将图片上的字进行膨胀放大实则不然

可以看到膨胀是将图片上的亮色区域进行放大,字就会变得更小,结构体够大的情况下,字就会看不见了**

可以看到腐蚀是将图片上的亮色区域进行放小,字就会变得更大。

2 膨胀

1.先看膨胀函数的原码,可以到opencv官网进行查看

附链接:https://docs.opencv.org/4.5.5/

这里选择是4.5.5 版本

当我们用dilate 函数时一般情况下使用前三个参数就可以了,后面参数都有其默认值,可以视情况改变

2 接下来了解getStructuringElement函数

3 代码

int main()
{
	Mat img1, img2;
	img1 = imread("猫.png");
	imshow("原图", img1);
	Mat element = getStructuringElement(MORPH_RECT, Size(7, 7));
	dilate(img1, img2, element);
	imshow("效果图", img2);
	waitKey(0);
}

效果图 :

3 腐蚀

1.先看腐蚀函数的原码

2 代码

int main()
{
	Mat img1, img2;
	img1 = imread("猫1.jpg");
	imshow("原图", img1);
	Mat element = getStructuringElement(MORPH_RECT, Size(7, 7));
	erode(img1, img2, element);
	imshow("效果图", img2);
	waitKey(0);
}

3 效果图

4 调整数值的轨迹条

1.先看函数原码

2 代码

Mat img1, img2;
int chu = 3;
int da = 21;
void hui(int, void*);
int main()
{
	img1 = imread("猫1.jpg");
	namedWindow("原图");
	imshow("原图", img1);
	namedWindow("膨胀");
	createTrackbar("结构元尺寸", "膨胀", &chu, da,hui);
	hui(chu, 0);
	waitKey(0);
}
void hui(int, void*)
{
	int s = chu ;
	Mat elent = getStructuringElement(MORPH_RECT, Size(s, s));
	dilate(img1, img2, elent);
	imshow("膨胀", img2);
}

3 效果图

加载全部内容

相关教程
猜你喜欢
用户评论