python opencv 怎么对图片经行霍夫变换检测直线,并在图片种将霍夫变换检测到的直线画出
时间: 2023-06-09 12:05:29 浏览: 131
对读入的图片做霍夫变换_识别出图片中的直线并输出_matlab
5星 · 资源好评率100%
来?
使用Python的OpenCV库可以很方便地实现霍夫变换检测直线,并在图片上画出检测到的直线。具体的步骤如下:
1. 导入必要的库文件
```
import cv2
import numpy as np
```
2. 读取图片并进行灰度化处理
```
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
```
3. 霍夫变换检测直线
```
lines = cv2.HoughLinesP(gray,1,np.pi/180,100,minLineLength=100,maxLineGap=10)
```
其中,`gray` 是灰度化后的图片,`1` 和 `np.pi/180` 分别代表 ρ 和 θ 的精度,`100` 是阈值参数,`minLineLength=100` 和 `maxLineGap=10` 分别是最小直线长度和最大直线间隔。
4. 在图片上画出检测到的直线
```
for line in lines:
x1,y1,x2,y2 = line[0]
cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2)
```
其中,`line[0]` 提取出检测到的直线的端点坐标,`(0,0,255)` 是直线的颜色,`2` 是直线的宽度。
完整代码如下:
```
import cv2
import numpy as np
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
lines = cv2.HoughLinesP(gray,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,0,255),2)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
执行以上代码后,就可以在窗口中看到画出的直线。
阅读全文