凭什么Hough转换是有效的

CV的应用之一: 是车道检测, 主要的核心算法的Hough直线筛选, 先列出代码, 尔后, 明天(要出个门呐)或后天把原理输出, 完成闭环:

#coding: utf8
import cv2
import numpy as np

##首先检测边缘
img = cv2.imread('lane.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gaus = cv2.GaussianBlur(gray, (5, 5), 0)
lowth = 80
highth = lowth * 3
edges = cv2.Canny(gaus, lowth, highth, apertureSize=3)
cv2.namedWindow("edge",0)
cv2.imshow("edge",edges)
cv2.waitKey(0)

##然后检测直线
height,width=gray.shape
minLineLength = 100
maxLineGap = 30
lines = cv2.HoughLines(edges,1,np.pi/180,200)
print("gray image size=",gray.shape)
print("lines[0]",lines[0])

##1 返回半径大小和角度##
for rho,theta in lines[0]:
    a = np.cos(theta) ##x方向偏移
    b = np.sin(theta) ##y方向偏移
    x0 = a*rho
    y0 = b*rho
    
    ##右无穷点
    x1 = int(x0 + 1000*(-b)) 
    y1 = int(y0 + 1000*(a))
    ##左无穷点
    x2 = int(x0 - 1000*(-b))
    y2 = int(y0 - 1000*(a))

    print("x0=",x0,"x1=",x1,"x2=",x2)
    print("y0=",y0,"y1=",y1,"y2=",y2)

    cv2.circle(img,(int(x0),int(y0)),4,(255,255,0),2,8,0) ##画出切点
    cv2.line(img,(0,0),(x0,y0),(255,0,0),2) ##画出半径
    cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2) ##画出直线
    
cv2.imshow("Edges", img)
cv2.imwrite("HoughLine.jpg",img)
cv2.waitKey(0)

TODO: 代码结束, 别忘了原理输出, 结束闭环.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值