📜  houghlinesp python stackoverflow - Python (1)

📅  最后修改于: 2023-12-03 14:41:44.446000             🧑  作者: Mango

使用HoughLineP检测直线

当我们需要在一张图片中检测直线时,可以使用OpenCV库中的HoughLineP函数。该函数可以在处理后的图像中检测出直线的起点和终点坐标。

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.HoughLinesP(edges, 1, np.pi/180, threshold=50, minLineLength=50, 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('result', img)
cv2.imwrite('result.jpg', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
HoughLineP函数参数解析
cv2.HoughLinesP(image, rho, theta, threshold[, lines[, minLineLength[, maxLineGap]]]) → lines
  • image:要进行直线检测的原始图像;
  • rho:参数极径 r 以像素值为单位的分辨率。我们使用1像素。
  • theta:参数极角 θ以弧度为单位的分辨率。我们使用1度(即CV_PI/180);
  • threshold:累加器阈值参数,只有符合该参数的值才能被检测出来;
  • minLineLength:线段以像素为单位的最小长度;
  • maxLineGap:在同一直线上两点之间允许的最大间隔。
结论

使用HoughLineP函数可以方便地在图像中检测直线。该函数的参数需要根据具体情况进行调整,才能得到满意的结果。