我对opencv相机校准坐标转换感到困惑。我使用示例代码来校准我的相机,我得到了这个结果:
当我使用这个相机矩阵乘以相机坐标系中的一个点时,比如P = [50,50,1.35],输出结果太大,不可能是像素坐标。这有什么不对?我错过了什么吗?
图像为1920 x 1080.这是棋盘配置文件信息:
答案 0 :(得分:3)
您可以在OpenCV documentation中找到透视投影模型的不同方程式,如下图所示(感谢link)。
假设相机框架P=(X,Y,Z)
中有一个点Fc
,其在标准化相机框架中的坐标为:
x' = X/Z
y' = Y/Z
它在图像平面上的投影(假设没有失真):
u = fx * x' + cx
v = fy * y' + cy
fx
和fy
焦距以像素为单位,cx
,cy
是图像中主要点的坐标。
在你的情况下,你的Z距离相机1.35,但是其他2个坐标与Z坐标相比太远了。
数学上没有问题,只是你的相机P看不到你的P点。