您是第: 个访问我网站的人!
站内搜索:
浏览信息 您当前的位置:首页 >> 浏览信息
Python-OpenCV 处理图像之Canny 边缘检测
【字体: 】   【时间:2019-03-10】  【作者:不學無數】  【关 闭】  【打 印

关于边缘检测的基础来自于一个事实,即在边缘部分,像素值出现”跳跃“或者较大的变化。如果在此边缘部分求取一阶导数,就会看到极值的出现。

Canny 算法可以对直线边界做出很好的检测;

关于 Canny 算法原理的描述,可参考:

  • Canny 边缘检测

    import cv2.cv as cv
    import math
     
    im=cv.LoadImage('img/road.png', cv.CV_LOAD_IMAGE_GRAYSCALE)
     
    pi = math.pi #Pi value
     
    dst = cv.CreateImage(cv.GetSize(im), 8, 1)
     
    cv.Canny(im, dst, 200, 200)
    cv.Threshold(dst, dst, 100, 255, cv.CV_THRESH_BINARY)
     
    #---- Standard ----
    color_dst_standard = cv.CreateImage(cv.GetSize(im), 8, 3)
    cv.CvtColor(im, color_dst_standard, cv.CV_GRAY2BGR)#Create output image in RGB to put red lines
     
    lines = cv.HoughLines2(dst, cv.CreateMemStorage(0), cv.CV_HOUGH_STANDARD, 1, pi / 180, 100, 0, 0)
    for (rho, theta) in lines[:100]:
        a = math.cos(theta) #Calculate orientation in order to print them
        b = math.sin(theta)
        x0 = a * rho
        y0 = b * rho
        pt1 = (cv.Round(x0 + 1000*(-b)), cv.Round(y0 + 1000*(a)))
        pt2 = (cv.Round(x0 - 1000*(-b)), cv.Round(y0 - 1000*(a)))
        cv.Line(color_dst_standard, pt1, pt2, cv.CV_RGB(255, 0, 0), 2, 4) #Draw the line
     
    #---- Probabilistic ----
    color_dst_proba = cv.CreateImage(cv.GetSize(im), 8, 3)
    cv.CvtColor(im, color_dst_proba, cv.CV_GRAY2BGR) # idem
     
    rho=1
    theta=pi/180
    thresh = 50
    minLength= 120 # Values can be changed approximately to fit your image edges
    maxGap= 20
     
    lines = cv.HoughLines2(dst, cv.CreateMemStorage(0), cv.CV_HOUGH_PROBABILISTIC, rho, theta, thresh, minLength, maxGap)
    for line in lines:
        cv.Line(color_dst_proba, line[0], line[1], cv.CV_RGB(255, 0, 0), 2, 8)
     
    cv.ShowImage('Image',im)
    cv.ShowImage("Cannied", dst)
    cv.ShowImage("Hough Standard", color_dst_standard)
    cv.ShowImage("Hough Probabilistic", color_dst_proba)
    cv.WaitKey(0)
  • 原图

    使用 Canny 算法处理之后

    标记出标准的直线

    标记出所有可能的直线

 

 

 

 

关闭页面】【页面顶部
本站所有资源未经许可不得转载复制,违者必究。
© Copyright 2020-2025 www.yuzhilin.com.cn All Right Reaserved. 不学无数之家 拥有所有版权
地址:中国·光谷 E-mail:zhilinyu@163.com  鄂ICP备20001861号 技术支持:不学无数之家