我很难在真实物体的图片中呈现具有相同尺寸和比例的.stl模型。 我把真实物体放在视野区域的中心,我想在模型和真实物体之间翻转(真实物体比模型中的物体小9倍)。
首先,我在tutorial中使用OpenGL校准相机,此时焦点对于真实物体是最佳的。 在我得到cx,cy,fx和fy值之后,我创建了一个包含这些值的透视矩阵,并使用了glMultMatrixd函数。 最后,我将照片调整为与我的OpenGL窗口相同,并将照片与渲染模型进行比较。
但我对结果有一些问题:
我的关系矩阵如下:
var_dump
答案 0 :(得分:0)
OpenGL期望列主要内存顺序的矩阵。您在上面显示的数据结构是行主要内存顺序(正常的写入顺序,OpenCV也用作内存顺序),因此您需要在传递给OpenGL之前对其进行转置。
您还构建了一个对称的视锥体(右==左== cx和顶部==底部== cy),它假设光轴(cx,cy)位于相机的中心&# 39; s成像器。真正的相机永远不会那么完美,这就是我们必须校准它们的原因。你需要一个不对称的平截头体,使用left == cx,right ==(width-cx)等; this guide应该有所帮助。
请注意,在OpenGL中,+ Y为向上,+ Z在相机后面(在OpenCV + Y中向下,+ Z在相机前面),因此请检查矩阵上的符号。