使用OpenCV进行相机校准

时间:2013-04-04 12:01:11

标签: c++ opencv

我有一个项目,我必须使用OpneCV来获取相机矩阵,我运行OpenCV示例项目,我的问题是我可以检查保存数据是否正确?因为我的第一个例子是她得到的东西:

<Camera_Matrix type_id="opencv-matrix">
<rows>3</rows>
<cols>3</cols>

d
         4.0608614269653586e + 001 0. 3.1950000000000000e + 002 0。     4.0608614269653586e + 001 2.3950000000000000e + 002 0. 0. 1.

2 个答案:

答案 0 :(得分:1)

如果您有兴趣检查数据是否正确保存,请阅读您的矩阵。这可以使用FileStorage类openCV完成。以下是write的示例,您可以在同一页面上找到读取功能。

如果您想知道您的矩阵是否有意义,请先使用完整性检查。最简单的相机矩阵由以下条目组成:

[fx,0,cx; 0,fy,cy; 0,0,1]

其中fx = fy,如果像素是正方形并且cx = w / 2且cy = h / 2近似。鉴于您使用了640x480图像并且焦距约为40像素,您的矩阵似乎可能是正确的。然而,后者看起来很可疑:您的相机的视野(FOV)可以通过以下公式计算:tan2(FOV / 2)= w * 0.5 / f = 320/40 = 80,其中FOV = 180deg ; 只有在使用非常宽的角度(所谓的鱼眼)时才会发生这种情况。如果不是这种情况,请检查校准程序。你用了什么代码?

答案 1 :(得分:0)

你的矩阵看起来没问题,3x3矩阵。

当您说保存数据时,您想录制视频吗?

但我推荐你参加openCV的Q&amp; A。

http://answers.opencv.org/questions/

在这个论坛上提出你的问题。