图像腐蚀和膨 胀-- opencv学习记录(二)
1概念
- 腐蚀跟膨 胀是最基本的形态学 运算
- 腐蚀跟膨 胀是对图像的白色的部分(亮光部分)进行操作
- 腐蚀是对亮光部分进行腐蚀 拥有比原图更小的亮光部分
- 膨 胀是对亮光部分进行膨 胀 拥有比原图更大的亮光部分
这里有一个误区
假如说在图片上的一个字,很多人都会认为膨 胀是将图片上的字进行膨 胀放大实则不然

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

可以看到腐蚀是将图片上的亮色区域进行放小,字就会变得更大。
2 膨 胀
1.先看膨 胀函数的原码,可以到opencv官网进行查看
附链接:https://docs.opencv.org/4.5.5/ 这里选择是4.5.5 版本

src 输入图像
dst 输出与src相同大小和类型的图像。
kernle 用于膨 胀的核结构元素 内核可以使用getStructuringElement创建
getStructuringElement函数下面会说到
anchor 元素中锚的锚定位置; 默认值(-1,-1)表示锚位于元素中心。
iterations 迭代次数
borderType 像素外推方法
borderValue 当边界为常数时的边界值
当我们用dilate 函数时一般情况下使用前三个参数就可以了,后面参数都有其默认值,可以视情况改变
2.接下来了解getStructuringElement函数

shape 形状
MORPH_RECT 矩形
MORPH_CROSS 交叉形
MORPH_ELLIPSE 椭圆形
Szie 构造元素的大小(内核尺寸)
anchor 锚定位置,默认(-1,1)表示锚位于中心
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.先看腐蚀函数的原码

src 输入图像
dst 输出与src相同大小和类型的图像。
kernle 用于腐蚀的核结构元素 内核可以使用getStructuringElement创建
anchor 元素中锚的锚定位置; 默认值(-1,-1)表示锚位于元素中心。
iterations 迭代次数
borderType 像素外推方法
borderValue 当边界为常数时的边界值
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.先看函数原码

trackbarname 创建的轨迹条名称。
winname 窗口的名称,可以附加在指定的窗口上
value 一个指向整形变量的指针,其值反映滑块的位置。 在创建时,滑块的位置由这个变量定义。
count滑块的最大位置。 最小的位置总是0。
onChange 指针指向每次滑块改变位置时调用的函数。 这个函数的原型应该是void Foo(int,void*); 其中第一个参数是轨迹条位置,第二个参数是用户数据(见下一个参数)。 如果回调函数是NULL指针,则不调用回调函数,只更新值。
userdata 作为回调函数传递的用户数据
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.效果图

- 分享
- 举报
暂无数据-
浏览量:1901次2023-07-14 14:36:03
-
浏览量:1404次2023-07-17 13:57:30
-
浏览量:827次2023-07-17 13:48:57
-
浏览量:1300次2023-11-09 13:58:15
-
浏览量:1216次2023-07-14 14:16:32
-
浏览量:1633次2023-07-05 10:11:08
-
浏览量:1472次2023-11-09 13:45:46
-
浏览量:1245次2023-07-05 10:11:29
-
2023-07-05 10:11:14
-
浏览量:2841次2020-07-31 18:12:31
-
浏览量:1271次2024-01-12 11:39:24
-
浏览量:9501次2021-07-19 17:09:44
-
浏览量:2223次2023-12-19 16:51:40
-
浏览量:838次2024-01-15 15:45:30
-
浏览量:5032次2021-01-21 14:02:11
-
浏览量:1007次2023-12-19 11:06:03
-
浏览量:2431次2020-08-28 16:40:19
-
浏览量:951次2023-09-11 18:04:33
-
浏览量:4784次2021-01-12 18:43:19
-
29篇
- OpenCV实现多张图像拼接
- findContours()函数与drawContours()函数 —— opencv学习记录(五)
- 海思多媒体(MPP)开发(1)——nvp6134驱动介绍
- 海思hi3516A-sample的使用3--vio实现CVBS输出
- 海思摄像机(MobileCam )选型方案及预计价格
- 海思3531A解码this is a field stream and vdec do not support! chn 3
- 国产芯片风雨飘摇的二十年发展之路
- 使用captcha_trainer开源框架来进行验证码识别训练
- ACT88430在海思hi3559A平台应用及参考设计
- 海思半导体最新关键指标
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
mini菜
微信支付举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明

微信扫码分享
QQ好友