使用python实现直线检测
时间: 2024-01-02 10:01:39 浏览: 97
要使用Python实现直线检测,可以使用霍夫变换(Hough Transform)算法。下面是一个基本的例子:
```python
import cv2
import numpy as np
img = cv2.imread('lines.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
lines = cv2.HoughLines(edges,1,np.pi/180,200)
for line in lines:
rho,theta = line[0]
a = np.cos(theta)
b = np.sin(theta)
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))
cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个例子中,我们首先读取了一张图片,并将其转换为灰度图像。然后使用Canny边缘检测算法找到图像中的边缘。接着使用霍夫变换来检测直线,其中第一个参数是输入图像,第二个参数是距离精度,第三个参数是角度精度,第四个参数是阈值。阈值越高,则检测到的直线越少。最后,我们将检测到的直线在原图像中绘制出来。
你可以将上述代码保存到文件中,然后将图片文件名修改为你要检测的图片文件名,运行代码即可。
阅读全文