opencv 直线检查 pychon的完整代码
时间: 2024-09-23 11:07:23 浏览: 27
openCV直线检测完整代码
在OpenCV中,检查直线通常涉及到边缘检测、霍夫变换和直线检测算法。以下是使用Python和OpenCV的基本步骤,假设你已经有了一个灰度图像作为输入:
```python
import cv2
import numpy as np
# 读取图像
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
# 高斯模糊以平滑图像减少噪声
blurred = cv2.GaussianBlur(image, (5, 5), 0)
# Canny边缘检测
edges = cv2.Canny(blurred, 50, 150)
# 霍夫变换,寻找直线
lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 100, minLineLength=100, maxLineGap=20)
# 如果有找到线条
if lines is not None:
for line in lines:
x1, y1, x2, y2 = line[0]
# 计算斜率和截距
slope, intercept = np.polyfit([x1, x2], [y1, y2], 1)
# 可视化直线
cv2.line(image, (x1, y1), (x2, y2), (0, 255, 0), 2) # 绿色线条
cv2.circle(image, (int(x1), int(y1)), 5, (255, 0, 0), -1) # 黄色标记起点
cv2.circle(image, (int(x2), int(y2)), 5, (255, 0, 0), -1) # 黄色标记终点
print(f"斜率: {slope:.2f}, 截距: {intercept:.2f}")
# 显示原始图像和检测到的直线
cv2.imshow("Detected Lines", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码首先进行了高斯滤波,然后应用Canny边缘检测找出图像中的边缘。接着,HoughLinesP函数基于边缘像素来查找可能的直线,并返回它们的位置信息。如果找到了直线,就绘制出来,并输出相应的斜率和截距。
阅读全文