📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处
膨胀与腐蚀是图像处理中最常用的形态学操作手段,其中要涉及到一个主要的API,即生成卷积核的API。
一、膨胀操作
原理:将卷积核内的像素最大值代替区域内锚点的值,这样图像就会变白,也就是白色区域扩大。
所谓锚点,就是卷积运算后赋予某点的值,该点就是锚点。锚点默认是点Point(-1, -1),即为区域的中心像素。
1.1API-dilate
函数原型如下:
dilate(src, dst, kernel);
1.2全部代码
#include<opencv2\opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
Mat src, dst;
src = imread("D:/images/box1.png");
if (src.empty())
{
cout << "could not load image !";
return -1;
}
imshow("原图", src);
Mat kernel;
kernel = getStructuringElement(MORPH_RECT, Size(5, 5), Point(-1, -1));//设计一个卷积核
dilate(src, dst, kernel);//膨胀API
imshow("膨胀后", dst);
waitKey(0);
return 0;
}
1.3效果展示
1.4结论
膨胀后,由于像素值变大后导致白斑区域扩大
二、腐蚀操作
原理:将卷积核内的像素最小值代替区域内锚点的值,因此腐蚀跟膨胀刚好效果是相反的。
通过腐蚀,理解为浓硫酸的腐蚀效果,图像黑色的区域扩大了。
2.1API-erode
腐蚀操作函数原型如下
erode(src, dst, kernel);
2.2全部代码
#include<opencv2\opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{
Mat src, dst;
src = imread("D:/images/box1.png");
if (src.empty())
{
cout << "could not load image !";
return -1;
}
imshow("原图", src);
Mat kernel;
kernel = getStructuringElement(MORPH_RECT, Size(5, 5), Point(-1, -1));//设计一个卷积核
erode(src, dst, kernel);//腐蚀API
imshow("膨胀后", dst);
waitKey(0);
return 0;
}
2.3效果展示
2.4结论
腐蚀后,由于像素值变小,导致白斑区域缩小。