我正在尝试找到椭圆与直线的交点。
我从图像中提取椭圆,并从 fitEllipse 获取 RotatedRect。现在我画几条线,它们(理想情况下)与椭圆相交。我需要找到交叉点。
这基本上是原始图像。
我想找到那些点。
这里有一些测试向量。
` 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()`
发布问题并详细思考后,我找到了解决方案。也许有点老套,但它确实有效。
我所做的是,创建一个新图像,绘制椭圆。创建第二张图像,并绘制线条。然后按位与它们,看看哪个点仍然被设置。