当前位置:   article > 正文

《Opencv3计算机视觉》Python语言实现-第三章Canny算法_计算机视觉第三章读取图像

计算机视觉第三章读取图像

Canny算法的python实现代码:

import cv2
import numpy as np

img = cv2.imread("D:\\picture\\1.jpg", 0)
cv2.imwrite("canny.jpg", cv2.Canny(img, 200, 300))
cv2.imshow("canny", cv2.imread("canny.jpg"))
cv2.waitKey()
cv2.destroyAllWindows()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

输入:在这里插入图片描述
输出:在这里插入图片描述Canny边缘检测算子
canny算法原理理解: https://blog.csdn.net/yuanpan/article/details/82011826

Canny的主要贡献是推导出了最有边缘检测算子。他考核边缘算子的指标如下:
(1)低误判率,即尽可能少地把边缘点误认为是非边缘点;
(2)高定位精度,即准确地把边缘点定位在灰度变化最大的像素上;
(3)抑制虚假边缘。
Canny算法可以减少小模板检测中的边缘终端,有利于得到较完整的线段。Canny算子的边缘检测效果优于传统的Sobel和Marr检测算子。
canny算法分为五步:
1.高斯模糊(高斯模糊为了去除噪声,降低伪边缘的识别。高通滤波器有一个称为半径的属性,所以高斯模糊的半径选择很重要,它决定了多大面积的邻近像素参与滤波运算)
2.计算梯度幅值和方向(可以通过Sobel算子来计算)
3.非最大值抑制(非极大抑制能够保留局部最大梯度而抑制其他所有梯度值)
4.双阈值(设置高阈值和低阈值,大于高阈值的像素点被称为强边缘点,介于高阈值和低阈值之间的像素点被称为弱边缘点)
5.滞后边界跟踪(针对上述的弱边缘点很可能含有由噪声导致的强边缘点,利用滞后边界跟踪方法,如果一个弱边缘点周围没有一个强边缘点与之连通,则该弱边缘点为真弱边缘点,被舍弃掉)

其实canny算法的原理过程虽然复杂,但是最后被封装在cv2库中,我们如果想看一张图片的canny算子效果图,只需要调用cv2.Canny()这个函数即可。

img = cv2.imread("D:\\picture\\1.jpg", 0)
cv2.imwrite("canny.jpg", cv2.Canny(img, 200, 300))
cv2.imshow("canny", cv2.imread("canny.jpg"))
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/950156
推荐阅读
相关标签
  

闽ICP备14008679号