Python OpenCV:基于直线相交的端点

我正在尝试根据直线和窗口边缘之间的交点计算点的x值或y值。窗口的高度和宽度为640,480。我相信我的理论是正确的,但得出的结果与预期的相差很大。

下面的代码是4条if语句,它们代表绘制线条的不同方式。例如,如果x3 > oX and y3 > oY,则表示直线的方向右移。我不使用2 if语句并在整个屏幕上画线的原因是因为我试图显示线性移动对象从x3,y3到屏幕相交的路径。我通过使用y=mx+c公式并通过重新排列并使用x3和y3来计算c来得出最后一点,这在数学上讲时等于x2和y2。然后,我假设最终点(px,py)将与顶部或底部相交,具体取决于通过制作py = 480py = 0来决定行的方向。我通过if语句检查px值是否不在屏幕边缘,以检查是否正确假设了交点。如果该值在屏幕之外,则可以假定px的值为0或640,然后使用py公式计算py = -m * px + c的值。

问题是我似乎无法获得480x640窗口内的准确值。我不相信我的数学理论是正确的,但是如果有人可以向我解释这一点,那将是很好的。 if语句如下。非常感谢!

            m = ((y3-oY)/(x3-oX))
            if x3 > oX and y3 > oY:
                c = y3 + m*x3
                py = 480
                px = (c - py)/m
                if px > 640:
                    px = 640
                    py = -m * px + c

            elif x3 < oX and y3 > oY:
                c = y3 + m*x3
                py = 480
                px = (c - py)/m
                if px < 0:
                    px = 0
                    py = -m * px + c

            elif x3 > oX and y3 < oY:
                c = y3 + m*x3
                py = 0
                px = (c - py)/m
                if px > 640:
                    px = 640
                    py = -m * px + c

            elif x3 < oX and y3 < oY:
                c = y3 + m*x3
                py = 0
                px = (c - py)/m
                if px > 0:
                    px = 0
                    py = -m * px + c
anita999 回答:Python OpenCV:基于直线相交的端点

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2711373.html

大家都在问