使用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

注意事项

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

樱桃木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值