我发现以下代码,它使用Canny边缘检测和霍夫算法来检测所有的线。下面的代码用于从其中一个线中获取点的位置,但由于这是一张图片,我不知道如何获取x轴和y轴的比例尺(例如,在这里x1=0,x2=4,y1=0,y2=45),以便我可以获取该掩蔽线的x和y轴点。有什么方法可以做到这一点吗?先谢谢了。
以下是我使用的代码:
以下是我使用的代码:
import numpy as np
import cv2
img = cv2.imread('linearline.png', 1)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
lower_range = np.array([18, 100, 100], dtype=np.uint8)
upper_range = np.array([38, 255, 255], dtype=np.uint8)
mask = cv2.inRange(hsv, lower_range, upper_range)
edges = cv2.Canny(mask,50,150,apertureSize = 3)
cv2.imshow('edgesimage',edges)
print img.shape[1]
print img.shape
minLineLength=img.shape[1]-300
lines = cv2.HoughLinesP(image=edges,rho=0.02,theta=np.pi/500,
threshold=10,lines=np.array([]),minLineLength=minLineLength,maxLineGap=100)
a,b,c = lines.shape
for i in range(a):
cv2.line(img, (lines[i][0][0], lines[i][0][1]), (lines[i][0][2],
lines[i][0][3]), (0, 0, 255), 3, cv2.LINE_AA)
cv2.imshow('result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
我无法上传我的linearline.png图表,但它是一种x-y坐标系图。
编辑:这是我使用的示例图片 链接