我想根据已校准相机的内在和外在信息来计算世界坐标。
因此,我给出了以下信息(基于此:https://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html):
f_x和f_y:焦距(以像素为单位) c_x和c_y:主点的位置(图像中心) 相机拍摄的图像的宽度和高度(以像素为单位)。 (宽度:1920px,高度:1200px)
我知道相机在3D场景中的位置,也知道相机旋转的方向。
现在,我的Unity World中有一个Mesh,我想基于例如像素(x:1000,y:400)应用Raycast。然后,我需要基于此信息对原始/居中的相机方向进行旋转,以启动Raycast。然后,我要使用Unity场景中的命中位置来标记由相机拍摄的2D图像中显示的元素的位置。
让我们假设以下情况。
图片宽度:1920,图片高度:1200
摄像机的世界坐标为: X:11,32-Y:3,85-Z:9,06
相机旋转: X:12,55-Y:-111,81-Z:0,66
相机的焦距: f_x&f_y:1489,89
相机的主要点: c_x:962,96-c_y:620,58
要计算Raycasthit的新方向,需要计算图像坐标之间的eurlerAngles(1000、400)。
计算不应太复杂。但是我被困住了,肯定可以在这里使用一些帮助。