【发布时间】:2020-05-24 22:31:35
【问题描述】:
我有 2 张输入图像,其中(静态)相机处于未知角度。我设法使用 opencv 提取边缘和兴趣点。但我一直在根据图像计算真实角度。
从图像 #1 我需要计算相对于平面的相机角度。我知道平面上的 3 个点形成一个等边三角形(60 度角)。三角形的中心点也是平面的中心点。但是图像上的平面中心点被另一个物体覆盖了。
从图像 #2 我需要计算平面上的物体(点 C)到 3 个点之一和平面中心点(= 线 A 到 B)的实际角度。
如何计算真实角度 β,就好像相机与平面没有角度一样?
更新:
我正在https://docs.opencv.org/3.4/d9/d0c/group__calib3d.html寻找解决我的问题的方法
有许多功能,但我不知道如何将它们应用于我的具体问题。
有一个函数可以使用两个带有关键点的图像来计算 Homography,但我没有来自不同摄像机角度的场景图像。
然后是cv::findHomography 哪个Finds a perspective transformation between two planes。我知道 4 个源点,但我的 4 个目标点是什么?
我正在查看的另一个是cv::solvePnP 和cv::solvePnPRansac,但我再次只知道飞机上的 4 个源点。我不知道他们的 3D 对应点。
我错过了什么?
@Micka:感谢您的意见。我有 4 个点用于处理图像(3 个静态基点 + 点 C 处的对象)。我可以假设这些点都位于 z=0 的平面上。但是,我没有第二个平面的坐标,也没有相应 3D 点的 (x,y)。
【问题讨论】:
-
请edit 发布您自己的努力来解决这个问题。后者最好在代码中,这称为minimal reproducible example。
-
您需要 2 张以上的图像才能正确估计角度。请看这个post。
-
您需要平面上的 4 个点来计算透视单应性。之后,您可以将所有像素扭曲到该平面并计算那里的角度。
标签: numpy opencv image-processing image-rotation