python opencv直线拟合
时间: 2023-10-11 12:05:08 浏览: 85
OpenCV3.3最小二乘法直线拟合
在 OpenCV 中,可以使用 Hough 变换来进行直线拟合。
以下是一个简单的例子:
```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)
# 进行 Hough 变换
lines = cv2.HoughLines(edges, 1, np.pi/180, 200)
# 绘制检测到的直线
for line in lines:
rho, theta = line[0]
a, b = np.cos(theta), np.sin(theta)
x0, y0 = a*rho, b*rho
x1, y1 = int(x0 + 1000*(-b)), int(y0 + 1000*a)
x2, y2 = int(x0 - 1000*(-b)), int(y0 - 1000*a)
cv2.line(img, (x1, y1), (x2, y2), (0, 0, 255), 2)
# 显示结果
cv2.imshow("Result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这个例子中,我们首先读取一张图片,然后将其转换为灰度图像,并进行边缘检测。接着,我们使用 Hough 变换来检测直线,并将检测到的直线绘制在原图上。最后,我们显示结果。
需要注意的是,Hough 变换需要设置一些参数,例如距离分辨率、角度分辨率、阈值等。这些参数的设置会影响到最终的结果。
阅读全文