opencv 膨胀_opencv: 图像的腐蚀与膨胀

腐蚀和膨胀是对白色部分(高亮部分)而言的,不是黑色部分。膨胀就是图像中的高亮部分进行膨胀,“领域扩张”,效果图拥有比原图更大的高亮区域。腐蚀就是原图中的高亮部分被腐蚀,“领域被蚕食”,效果图拥有比原图更小的高亮区域。

膨胀与腐蚀能实现多种多样的功能,主要如下:

  1. 消除噪声

  2. 分割(isolate)出独立的图像元素,在图像中连接(join)相邻的元素。

  3. 寻找图像中的明显的极大值区域或极小值区域

  4. 求出图像的梯度

opencv中使用到的函数:getStructuringElement、erode、dilate三个主要函数。getStructuringElement函数用于获取自定义的形状与尺寸内核,erode函数实现图像的腐蚀,dilate函数实现图像的膨胀。下面介绍三个函数的参数功能:

getStructuringElement(int shape, Size ksize, Point anchor)
  • shape:内核的形状,有三个参数选择:MORPH_RECT(矩形)、MORPH_CROSS(交叉形)、MORPH_ELLIPSE(椭圆形)。

  • ksize:内核大小

  • anchor:锚点 默认是Point(-1, -1)意思就是中心像素

erode( const Mat& src, Mat& dst, const Mat& element,Point anchor=Point(-1,-1),      int iterations=1,int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() )
  • src:原图像。

  • dst:目标图像。

  • element:腐蚀操作的内核。如果不指定,默认为一个简单的 3X3 矩阵。否则,我们就要明确指定它的形状,可以使用函数getStructuringElement().

  • anchor:默认为Point(-1,-1),内核中心点。省略时为默认值。

  • iterations:腐蚀次数。省略时为默认值1。

  • borderType:推断边缘类型,具体参见borderInterpolate函数。默认为BORDER_DEFAULT,省略时为默认值。

  • borderValue:边缘值

dilate( const Mat& src, Mat& dst, const Mat& element,Point anchor=Point(-1,-1),        int iterations=1,int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() )
  • 该函数参数同erode函数参数,详见上述。

实现代码:

#include #includeusing namespace std;using namespace cv;int main(){   Mat srcImage = imread("cat_face.jpg");  //获取自定义核  Mat element1 = getStructuringElement(MORPH_RECT, Size(10, 10));  Mat dst_erode;  //用自定义的内核进行腐蚀操作  erode(srcImage, dst_erode, element1);  //获取自定义核  Mat element2 = getStructuringElement(MORPH_RECT, Size(10, 10));  Mat dst_dilate;  //用自定义的内核进行膨胀操作  dilate(srcImage, dst_dilate, element2);  imshow("原图", srcImage);  imshow("腐蚀效果图", dst_erode);  imshow("膨胀效果图", dst_dilate);  waitKey(0);  return 0;}

实现结果:依次分别是:原图 、 腐蚀结果图 、膨胀结果图。

935a2f07653b00104aa212d34e1d9beb.png

"动动手指扫码或微信搜一搜关注哟"

395350fa454f24db9e620ffc6e76edfe.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值