OpenCV 椭圆与直线的交点

问题描述 投票:0回答:1

我正在尝试找到椭圆与直线的交点。

我从图像中提取椭圆,并从 fitEllipse 获取 RotatedRect。现在我画几条线,它们(理想情况下)与椭圆相交。我需要找到交叉点。

这基本上是原始图像。

Raw

我想找到那些点。

Target

这里有一些测试向量。

`    import cv2
import numpy as np

ellipse_center = np.array([439, 326])
ellipse_axes = np.array([int(283/2), int(565/2)])  
ellipse_angle = np.radians(91)  

line_point1 = np.array([583, 450])  
line_point2 = np.array([292, 115])  

window_name = "Demo"
cv2.namedWindow(window_name)
canvas = np.zeros((600, 800, 3), dtype=np.uint8)

while True:
    # Clear canvas
    canvas.fill(0)

    cv2.ellipse(canvas, tuple(ellipse_center), tuple(ellipse_axes), np.degrees(ellipse_angle), 0, 360, (0, 0, 255), 2)
    cv2.line(canvas, (293,115), (584,450), (0,0,255), 2)
    cv2.line(canvas, (70,290), (404,279), (0,0,255), 2)
    cv2.line(canvas, (59,353), (411,285), (0,0,255), 2)
    cv2.line(canvas, (463,272), (755,220), (0,0,255), 2)


    # Show canvas
    cv2.imshow(window_name, canvas)

    # Exit if 'q' is pressed
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# Close OpenCV window
cv2.destroyAllWindows()`
python c++ opencv computational-geometry
1个回答
0
投票

发布问题并详细思考后,我找到了解决方案。也许有点老套,但它确实有效。

我所做的是,创建一个新图像,绘制椭圆。创建第二张图像,并绘制线条。然后按位与它们,看看哪个点仍然被设置。

© www.soinside.com 2019 - 2024. All rights reserved.