使用opencv实现canny算子提取边缘特征

pic = 'D:/captcha/captcha dataset/yahoo/test/2e4McG.jpg'
def canny(src):
    img = cv2.imread(src)
    canny = cv2.Canny(img, 50, 150)
    cv2.imshow('canny', canny)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

canny(pic)

l  Canny算子边缘检测

先用高斯滤波器进行平滑处理

一幅图像中的边缘可能在方向上各有所异,所以Canny算法用四个滤波器分别检测图像中的水平、垂直和对角线边缘

Canny算子先利用高斯平滑滤波器来平滑图像以除去噪声,Canny分割算法采用一阶偏导的有限差分来计算梯度幅值和方向,在处理过程中,Canny算子还将经过一个非极大值抑制的过程,最后Canny算子还采用两个阈值来连接边缘。

Canny边缘检测算法

step1: 用高斯滤波器平滑图象;

step2: 用一阶偏导的有限差分来计算梯度的幅值和方向;

step3: 对梯度幅值进行非极大值抑制

step4: 用双阈值算法检测和连接边缘

Opencv中以下代码实现:cvCanny(dst,src, 50, 120, 3 );



版权声明:本文为qq_27684769原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。