概述
1.opencv 形态学变换 morphologyEx
函数
void morphologyEx( InputArray src, OutputArray dst,
int op, InputArray kernel,
Point anchor = Point(-1,-1), int iterations = 1,
int borderType = BORDER_CONSTANT,
const Scalar& borderValue = morphologyDefaultBorderValue() )
参数解释
- src:源图像Mat对象
- dst:目标图像Mat对象
- op:操作的类型,通过源码我们得知总共有以下几种类型:
enum MorphTypes{
MORPH_ERODE = 0, //腐蚀
MORPH_DILATE = 1, //膨胀
MORPH_OPEN = 2, //开操作
MORPH_CLOSE = 3, //闭操作
MORPH_GRADIENT = 4, //梯度操作
MORPH_TOPHAT = 5, //顶帽操作
MORPH_BLACKHAT = 6, //黑帽操作
MORPH_HITMISS = 7
}; - kernel:用于膨胀操作的结构元素,如果取值为Mat(),那么默认使用一个3 x 3 的方形结构元素,可以使用
getStructuringElement
来创建结构元素 - iterations: 迭代次数
- anchor:参考点,其默认值为(-1,-1)说明位于kernel的中心位置。
- borderType :边缘类型,默认为
BORDER_CONSTANT
。 - borderValue :边缘值,用它的默认值即可。
2.各种操作的效果
-
MORPH_ERODE(腐蚀)
跟erode(腐蚀)函数效果一样 -
MORPH_DILATE(膨胀)
跟dilate(膨胀)函数效果一样 -
MORPH_OPEN(开)
其实内部就是进行了先腐蚀后膨胀的操作。 -
MORPH_CLOSE(闭)
其实内部就是进行了先膨胀后腐蚀的操作。 -
MORPH_GRADIENT(梯度)
内部是膨胀减去腐蚀 -
MORPH_TOPHAT(顶帽)
-
MORPH_BLACKHAT(黑帽)
开运算—先腐蚀,后膨胀。去除图像中小的亮点(CV_MOP_OPEN);
闭运算—先膨胀,后腐蚀。去除图像中小的暗点(CV_MOP_CLOSE);
形态学梯度— (原图膨胀图像 -
原图腐蚀图像)(CV_MOP_GRADIENT);
顶帽— (原图像 -
原图像开操作)。保留小亮点,去除大亮点。(CV_MOP_TOPHAT);
黑帽— (原图像闭操作 -
原图像)(CV_MOP_BLACKHAT);
https://blog.csdn.net/kakiebu/article/details/79324301
https://blog.csdn.net/seniorc/article/details/112254126?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_title~default-5-112254126-blog-125228422.pc_relevant_paycolumn_v3&spm=1001.2101.3001.4242.4&utm_relevant_index=7
最后
以上就是舒适小笼包为你收集整理的opencv使用cv::morphologyEx()实现开运算,闭运算,礼帽与黑帽操作以及梯度运算的全部内容,希望文章能够帮你解决opencv使用cv::morphologyEx()实现开运算,闭运算,礼帽与黑帽操作以及梯度运算所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复