python opencv 找出图片中的直线,并计算出各直线的交点,并在窗口中显示结果
时间: 2024-06-10 18:05:14 浏览: 4
好的,以下是实现该功能的Python代码:
```
import cv2
import numpy as np
# 读取图片
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, 100)
# 计算交点
points = []
for i in range(len(lines)):
for j in range(i + 1, len(lines)):
rho1, theta1 = lines[i][0]
rho2, theta2 = lines[j][0]
a = np.array([[np.cos(theta1), np.sin(theta1)], [np.cos(theta2), np.sin(theta2)]])
b = np.array([rho1, rho2])
x0, y0 = np.linalg.solve(a, b)
x0, y0 = int(np.round(x0)), int(np.round(y0))
points.append((x0, y0))
# 显示结果
for x, y in points:
cv2.circle(img, (x, y), 5, (0, 255, 0), -1)
cv2.imshow("Result", img)
cv2.waitKey(0)
```
在代码中,我们首先使用`cv2.imread()`读取图片,然后灰度化和边缘检测得到图像的边缘。然后使用`cv2.HoughLines()`函数在边缘图像中找出直线。接着,我们使用求解线性方程组的方法计算直线之间的交点,并将它们保存在`points`列表中。最后,我们在原始图像中用绿色圆圈表示交点,并将结果显示在窗口中。
希望能对你有所帮助!
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)