cv2.houghlinesp怎么用
时间: 2023-05-30 12:02:28 浏览: 132
Opencv2.4.9函数HoughLinesP分析
cv2.houghlinesp()函数用于在二进制图像中检测直线。
函数原型:
`cv2.HoughLinesP(image, rho, theta, threshold, lines=None, minLineLength=None, maxLineGap=None)`
参数说明:
- `image`:输入的二值化图像(8位单通道图像)。
- `rho`:距离精度,一般取1。
- `theta`:角度精度,一般取 np.pi/180。
- `threshold`:检测直线的阈值,即在霍夫空间中某点所对应的像素值大于该阈值,则认为该点对应的直线存在。
- `lines`:输出的直线向量,每个向量由4个元素构成,分别表示直线上的两个端点的坐标(x1,y1,x2,y2)。
- `minLineLength`:线段最小长度,小于该长度的线段会被忽略。
- `maxLineGap`:线段最大间隔,如果两条线段之间的间隔小于该值,则认为它们是同一条直线。
示例代码:
```python
import cv2
import numpy as np
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 50, 150, apertureSize=3)
lines = cv2.HoughLinesP(edges, 1, np.pi/180, 100, minLineLength=100, maxLineGap=10)
for line in lines:
x1, y1, x2, y2 = line[0]
cv2.line(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
上述代码中,首先使用cv2.Canny()函数得到二值化边缘图,然后使用cv2.HoughLinesP()函数检测直线,最后在原图上将检测到的直线画出来。需要注意的是,cv2.HoughLinesP()函数输出的直线向量中存储的是直线的端点坐标,需要使用cv2.line()函数将其画出来。
阅读全文