本文主要是介绍https://www.pianshen.com/article/88571337012/,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
opencv中的开运算,闭运算,形态学梯度,顶帽和黑帽,Canny算子,Sobel算子,Laplace算子,Scharr滤波器 简易理解。
https://www.pianshen.com/article/29041305494/
开运算:先腐蚀,再膨胀
可以清除一些小东西(亮的),放大局部低亮度的区域
闭运算:先膨胀,再腐蚀
可以清除小黑点
形态学梯度:膨胀图与腐蚀图之差
提取物体边缘
顶帽:原图像 - 开运算图
突出原图像中比周围亮的区域
黑帽:闭运算图 - 原图像
突出原图像中比周围暗的区域
这些运算都能用一个函数进行处理
[cpp] view plain copy
- void morphologyEx(InputArray src, OutputArray dst, int op, InputArray kernel, ...)
看前四个参数就行了,后面的就用默认值
第一个参数 输入
第二个参数 输出
第三个参数 操作类型
MORTH_OPEN 函数做开运算
MORTH_CLOSE 函数做闭运算
MORTH_GRADIENT 函数做形态学梯度运算
MORTH_TOPHAT 函数做顶帽运算
MORTH_BLACKHAT 函数做黑帽运算
MORTH_DILATE 函数做膨胀运算
MORTH_ERODE 函数做腐蚀运算
第四个参数 内核类型 用getStructuringElement函数得到
例子:
-
morphologyEx(ma1, maArray[0], MORPH_OPEN, getStructuringElement(MORPH_RECT, Size(15,15))); imshow("im4", maArray[0]); morphologyEx(ma1, maArray[1], MORPH_CLOSE, getStructuringElement(MORPH_RECT, Size(15, 15))); imshow("im5", maArray[1]); morphologyEx(ma1, maArray[2], MORPH_GRADIENT, getStructuringElement(MORPH_RECT, Size(15, 15))); imshow("im6", maArray[2]); morphologyEx(ma1, maArray[3], MORPH_TOPHAT, getStructuringElement(MORPH_RECT, Size(15, 15))); imshow("im7", maArray[3]); morphologyEx(ma1, maArray[4], MORPH_BLACKHAT, getStructuringElement(MORPH_RECT, Size(15, 15))); imshow("im8", maArray[4]); morphologyEx(ma1, maArray[5], MORPH_DILATE, getStructuringElement(MORPH_RECT, Size(15, 15))); imshow("im9", maArray[5]); morphologyEx(ma1, maArray[6], MORPH_ERODE, getStructuringElement(MORPH_RECT, Size(15, 15))); imshow("im10", maArray[6]);
放出一些运行效果图:
canny边缘检测效果图:
Sobel边缘检测:
Scharr滤波器:
这篇关于https://www.pianshen.com/article/88571337012/的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!