【发布时间】:2015-05-05 05:38:54
【问题描述】:
我使用 opencv 3.0.0 beta。
我校准了我的相机,我想将图像点 (2D) 投影到 3D 点。
我看到了函数:void fisheye::projectPoints(InputArray objectPoints, OutputArray imagePoints, InputArray rvec, InputArray tvec, InputArray K, InputArray D, double alpha=0, OutputArray jacobian=noArray()),但我想要相反的投影。
我知道:
- 相机矩阵,
- 失真系数,
- 平移向量,
- 旋转矢量和
- 我的对象 3D 点与 3D 原点之间的距离。
我该怎么做?
【问题讨论】:
-
不可能...你会怎么做?唯一的方法是通过像素创建一条射线,并说对象点在该射线上的“某处”。如果你知道相机和物体之间的深度范围,你可以说“它在光线上的这个位置”......所以如果你没有一些额外的(例如深度)信息,或者多个相交的光线(=多个相机)那个像素,你不能从图像“投影”到物体!!
-
因为从对象到图像的投影减少了无法重建的信息(距离);)
-
好吧,我没想到。如果对象必须在圆形表面上(由网格表示),那有可能吗?
-
嗯,如果您知道相机的内在+外在参数并且您知道网格(位置),您可以拍摄相同类型的光线并计算与网格的交集为该像素的对象点!
-
抱歉,我编辑了我的问题。事实上,我没有网格,只有我的对象 3D 和 3D 原点之间的距离。那么,opencv 可以给我射线方向吗?
标签: opencv camera-calibration fisheye opencv3.0