python:opencv-边缘检测canny
python:opencv-边缘检测canny
Canny边缘检测步骤
-
去噪。边缘检测容易受到噪声的影响,第一步是用5*5的高斯滤波去除噪声
1
blur = cv2.GaussianBlur(img,(5,5),0)
-
计算梯度。梯度的方向与边缘的方向总是垂直的
-
非极大值抑制。去除那些非边界上的点。对每一个像素进行检查,看这个点的梯度是不是周围具有相同梯度方向的点中最大的。如果是则保留,否则抑制
-
应用双阈值确定边缘。我们需要设置两个阈值:minVal 和 maxVal。当图像的灰度梯度高于 maxVal 时被认为是真的边界,那些低于 minVal 的边界会被抛弃。如果介于两者之间的话,就要看这个点是否与某个被确定为真正的边界点相连,如果是就认为它也是边界点,如果不是就抛弃。
opencv中的边缘检测
只需要cv2.Canny()即可完成
代码:
1 | #边缘检测 |
Canny函数的参数详解
- image:8位输入图像
- threshold1:第一个输入的阈值minVal
- threshold2:第二个输入的阈值maxVal
- apertureSize :Sobel 算子的孔径大小。
- L2gradient :为计算图像梯度幅度(gradient magnitude)的标识。其默认值为 False。
当函数 cv2.Canny()的参数 threshold1 和 threshold2 的值较小时,能够捕获更多的边缘信息。
运行结果:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 星辰微光的博客!






