使用opencv-python来检测图片中的直线的步骤听语音

Hough变换,是用来检测直线的重要方法。

本文,介绍一下,用python-opencv模块来检测直线的方法。

使用opencv-python来检测图片中的直线的步骤

使用opencv-python来检测图片中的直线的步骤

工具/原料

  • 电脑

  • python3.6

方法/步骤

  1. 首先,要往python编译器里面加载模块和图片。

    # -*- coding: utf-8 -*- 

    import cv2

    import numpy as np

    import matplotlib.pyplot as plt

     

    img = cv2.imread("C:/……/a.jpg") #需要图片的绝对路径

    cv2.imshow('0', img)

    cv2.waitKey(0)

    cv2.destroyAllWindows()

    使用opencv-python来检测图片中的直线的步骤

  2. 运行上图的代码,可以显示原图。

    使用opencv-python来检测图片中的直线的步骤

  3. 把图片变成灰度图:

    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

    使用opencv-python来检测图片中的直线的步骤

  4. 用Canny算子检测图像的边界。

    这里的原理,就是图像卷积处理,而Canny算子就是卷积内核,又叫卷积模版。

    edges = cv2.Canny(gray,50,200)

    使用opencv-python来检测图片中的直线的步骤

  5. 用Hough变换来检测edges里面的直线:

    ls = cv2.HoughLines(edges,1,np.pi/180,100)

    l1 = ls[:,0,:]

    输出直线的端点坐标

    print(l1)

    一共检测出9条直线。

    使用opencv-python来检测图片中的直线的步骤

  6. 在原图中把所有的直线,凸显出来:

    for r,t in l1[:]:

        a = np.cos(t)

        b = np.sin(t)

        x0 = a*r

        y0 = b*r

        x1 = int(x0 + 1000*(-b))

        y1 = int(y0 + 1000*(a))

        x2 = int(x0 - 1000*(-b))

        y2 = int(y0 - 1000*(a)) 

        cv2.line(img,(x1,y1),(x2,y2),(0,255,255),1)

    使用opencv-python来检测图片中的直线的步骤

  7. 运行,出图。

    观察发现,有得线段没检测出来,而有的不存在的直线反而画出来了。

    使用opencv-python来检测图片中的直线的步骤

    END

注意事项

  • 直线检测的用处非常大。不如,无人驾驶技术,就需要用到直线检测。

 

相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页