在OpenCV中获取两点之间的直线方程

时间:2019-07-15 17:13:40

标签: python image opencv3.0

我在图像中有两个点,分别是(30,220)和(1385,1050)。我想找到通过这两点的方程式。我可以用python中的OpenCV库来划清界限。

cv.line(frame, (30, 220),  (1385, 1050), (0, 255, 0), thickness=3, lineType=8)

但是,我想得到那条线的方程式。 我的问题是如何找到这条线的方程式?

PS。我的最终目标是计算点与该线之间的最小距离。

2 个答案:

答案 0 :(得分:0)

https://en.wikipedia.org/wiki/Linear_equation

找到斜率m = (y_1 - y_2)/(x_1 - x_2),然后对{{1}求解方程y = mx + b,对于b使用y_1,对于{{1 }}(或者您可以使用第二个坐标)。

答案 1 :(得分:0)

我在这里找到它的方式:

from numpy import ones,vstack
from numpy.linalg import lstsq
import math

points = [(30, 220),(1385, 1050)]
x_coords, y_coords = zip(*points)
A = vstack([x_coords,ones(len(x_coords))]).T
m, c = lstsq(A, y_coords)[0]
print("Line Solution is y = {m}x + {c}".format(m=m,c=c))