📅  最后修改于: 2023-12-03 14:41:44.446000             🧑  作者: Mango
当我们需要在一张图片中检测直线时,可以使用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()
cv2.HoughLinesP(image, rho, theta, threshold[, lines[, minLineLength[, maxLineGap]]]) → lines
image
:要进行直线检测的原始图像;rho
:参数极径 r 以像素值为单位的分辨率。我们使用1像素。theta
:参数极角 θ以弧度为单位的分辨率。我们使用1度(即CV_PI/180);threshold
:累加器阈值参数,只有符合该参数的值才能被检测出来;minLineLength
:线段以像素为单位的最小长度;maxLineGap
:在同一直线上两点之间允许的最大间隔。使用HoughLineP函数可以方便地在图像中检测直线。该函数的参数需要根据具体情况进行调整,才能得到满意的结果。