我正在做一个项目,我需要校准摄像机。正如您所知,需要在三维世界中定义平面栅格点,并在图像平面上查找它们的对应关系。因此,第一个摄影机具有以下3D_网格点:
mport cv2 as cv
import numpy as np
WPoints_cam1 = np.zeros((9*3,3), np.float64)
WPoints_cam1[:,:2] = np.mgrid[0:9,0:3].T.reshape(-1,2)*0.4
print(WPoints_cam1)
[[0. 0. 0. ]# world coordinate center
[0.4 0. 0. ]
[0.8 0. 0. ]
[1.2 0. 0. ]
[1.6 0. 0. ]
[2. 0. 0. ]
[2.4 0. 0. ]
[2.8 0. 0. ]
[3.2 0. 0. ]
[0. 0.4 0. ]
[0.4 0.4 0. ]
[0.8 0.4 0. ]
[1.2 0.4 0. ]
[1.6 0.4 0. ]
[2. 0.4 0. ]
[2.4 0.4 0. ]
[2.8 0.4 0. ]
[3.2 0.4 0. ]
[0. 0.8 0. ]
[0.4 0.8 0. ]
[0.8 0.8 0. ]
[1.2 0.8 0. ]
[1.6 0.8 0. ]
[2. 0.8 0. ]
[2.4 0.8 0. ]
[2.8 0.8 0. ]
[3.2 0.8 0. ]]
如上图所示,第一个网格(对于第一个摄影机)从定义的参考3D_点(0,0,0)开始,并以点(3.2,0.8 0)结束,该点的恒定偏移为0.4,尺寸为9x3
注意,所有Z坐标均设置为Z=0(Zhengyou Zhang校准)
现在我的问题是,因为我需要定义第二个网格(对于第二个摄影机),它也引用定义的3D_坐标中心(0,0,0),我需要定义一个网格,从(3.6,0,0)开始,以(6.8,0.8,0)结束,偏移量为0.4,尺寸为9x3
我相信这很容易做到。然而,由于我的初级经验,我无法跳出框框进行思考
如果您能提供帮助并提前表示感谢,我们将不胜感激
可以按如下方式缩放每个列:
或者像这样将其组合成缩放矩阵(然后添加一个向量进行平移)
关于
(7.8 - 3.6) / 7
来自哪里,分子应该是不言而喻的。分母相同,但适用于原始尺寸。使用0:8
时,最大值为7
,最小值为0
,因此分母变为7 - 0
相关问题 更多 >
编程相关推荐