- 🚀 个人简介:CSDN「博客新星」TOP 10 , C/C++ 领域新星创作者
- 💟 作 者:锡兰_CC ❣️
- 📝 专 栏:【OpenCV • c++】计算机视觉
- 🌈 若有帮助,还请关注➕点赞➕收藏,不行的话我再努努力💪💪💪
文章目录
前言
形态学腐蚀膨胀操作是形态学的基本操作,常用于图形处理方面,实现了对目标像素点进行拓展的目的。从数学角度来讲,腐蚀膨胀操作就是将图像或者图像的一部分(称之为核A)与核(称之为核B)进行卷积。
腐蚀
Q:****什么是腐蚀?
A: 腐蚀就是求局部最小值的操作,也就是核B与图像进行卷积,计算核B覆盖区域的像素点的最小值,并把最小值赋值给参考点指定的像素,使得图像中的白色区域变小。
参考代码
voiderode(
InputArray src,
OutputArray dst,
InputArray kernel,
Point anchor =Point(-1,-1),int iterations =1,int borderType = BORDER_CONSTANT,const Scalar& borderValue = morphologyDefaultB -orderValue())
其中,
src
代表输入图像(二值化、灰度图像),
dst
代表输出图像,
kernel
表示定义的结构元素大小,
anchor
代表结构元素的中心,如果默认参数为 (-1,-1),程序会自动将其设置为结构元素的中心。
iteration
为迭代次数,可以选择对图像进行多次形态学运算。
borderType
以及
borderValue
是可选择参数设置,针对边界设置。
#include<opencv2/core/core.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/imgproc/types_c.h>#include<opencv2/imgproc.hpp>#include<iostream>usingnamespace cv;usingnamespace std;intmain(){
cv::Mat srcImage = cv::imread("...cc.png");if(!srcImage.data)return1;
cv::Mat srcGray;cvtColor(srcImage, srcGray, CV_RGB2GRAY);
cv::Mat segDst, dilDst, eroDst;// 分通道二值化
cv::inRange(srcGray, cv::Scalar(100),
cv::Scalar(255), segDst);// 定义结构元素
cv::Mat element = cv::getStructuringElement(
cv::MORPH_ELLIPSE, cv::Size(5,5));// 腐蚀膨胀操作
cv::erode(segDst, eroDst, element);
cv::imshow(" srcGray ", srcGray);
cv::imshow(" segDst ", segDst);
cv::imshow(" eroDst ", eroDst);
cv::waitKey();return0;}
实现效果
膨胀
Q:****什么是膨胀?
A: 膨胀就是求局部最大值的操作,也就是核B与图像进行卷积,计算核B覆盖区域的像素点的最大值,并把最大值赋值给参考点指定的像素,使得图像中的白色区域变大。
参考代码
voiddilate(
InputArray src,
OutputArray dst,
InputArray kernel,
Point anchor =Point(-1,-1),int iterations =1,int borderType = BORDER_CONSTANT,const Scalar& borderValue = morphologyDefault -BorderValue())
其中,
src
代表输入图像(二值化、灰度图像),
dst
代表输出图像,
kernel
表示定义的结构元素大小,
anchor
代表结构元素的中心,如果默认参数为 (-1,-1),程序会自动将其设置为结构元素的中心。
iteration
为迭代次数,可以选择对图像进行多次形态学运算。
borderType
以及
borderValue
是可选择参数设置,针对边界设置。
#include<opencv2/core/core.hpp>#include<opencv2/highgui/highgui.hpp>#include<opencv2/imgproc/types_c.h>#include<opencv2/imgproc.hpp>#include<iostream>usingnamespace cv;usingnamespace std;intmain(){
cv::Mat srcImage = cv::imread("...cc.png");if(!srcImage.data)return1;
cv::Mat srcGray;cvtColor(srcImage, srcGray, CV_RGB2GRAY);
cv::Mat segDst, dilDst, eroDst;// 分通道二值化
cv::inRange(srcGray, cv::Scalar(100),
cv::Scalar(255), segDst);// 定义结构元素
cv::Mat element = cv::getStructuringElement(
cv::MORPH_ELLIPSE, cv::Size(5,5));// 腐蚀膨胀操作
cv::dilate(segDst, dilDst, element);
cv::imshow(" srcGray ", srcGray);
cv::imshow(" segDst ", segDst);
cv::imshow(" dilDst ", dilDst);
cv::waitKey();return0;}
实现效果
其他:
更多专栏订阅:
- 👍 【开卷数据结构】
- 💛 【备战蓝桥,冲击省一】
- 💕 从零开始的 c++ 之旅
- 💖 【OpenCV • c++】计算机视觉
版权归原作者 锡兰_CC 所有, 如有侵权,请联系我们删除。