如何用Python的OpenCV获取图像中两条直线距离的代码
时间: 2024-04-30 19:25:06 浏览: 8
可以使用OpenCV的HoughLines函数检测直线,然后计算两条线之间的距离。以下是代码示例:
```python
import cv2
import math
# 读取图像
img = cv2.imread('image.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 i in range(len(lines)):
for j in range(i+1,len(lines)):
rho1,theta1 = lines[i][0]
rho2,theta2 = lines[j][0]
a1,b1 = np.cos(theta1),np.sin(theta1)
a2,b2 = np.cos(theta2),np.sin(theta2)
x0,y0 = a1*rho1,b1*rho1
x1,y1 = int(x0 + 1000*(-b1)), int(y0 + 1000*(a1))
x2,y2 = int(x0 - 1000*(-b1)), int(y0 - 1000*(a1))
x3,y3 = int(x0 + 1000*(-b2)), int(y0 + 1000*(a2))
x4,y4 = int(x0 - 1000*(-b2)), int(y0 - 1000*(a2))
d = abs((y2-y1)*(x4-x3)-(x2-x1)*(y4-y3)) / math.sqrt((y2-y1)**2 + (x2-x1)**2)
print("Distance between line",i+1,"and line",j+1,":",d)
```
此代码将检测图像中的所有直线,并计算它们之间的距离。请注意,此代码仅计算两条线之间的距离。如果要计算多条直线之间的距离,则需要进行适当的修改。