2014-02-25 29 views
0

我使用opencv自带的示例代码来校准我的笔记本电脑网络摄像头。相机校准结果:为什么它与输入类似?

我创建了大约82个棋盘图像并使用代码来处理它们。

结果如下:

This is a camera calibration sample. 
Usage: calibration configurationFile 
Near the sample file you'll find the configuration file, which has detailed help 
of how to edit it. It may be any OpenCV supported file format XML/YAML. 
Re-projection error reported by calibrateCamera: 0.424482 
Calibration succeeded. avg re projection error = 0.424483 

|看来,平均预测误差是和以前一样。为什么发生这种情况?

如何创建地图将未校准图像转换为校准图像?

+0

“平均投影误差与以前相同”是什么意思?你问为什么它显示两次相同的错误? – AldurDisciple

+0

看来校准后的错误与以前一样。为什么? – mans

+0

'calibrateCamera报告的重新投影错误:0.424482'这条线在校准之前不会给出错误,而是在校准函数'calibrateCamera'结束时获得的错误。另一个数字是在校准之后对相同错误的第二次估计。 – AldurDisciple

回答

1

校准工具应该已经生成了一个XML/YML文件,其中存储了相机系数K和失真系数D。您可以使用cv::FileStorage类(documentation link)加载这些系数。 This tutorial解释了如何使用这个类。

一旦你的校准数据(矩阵K和畸变系数D),则可以使用undistort函数(documentation link),以生成其中透镜畸变得到纠正的理想图像。

与第二个问题相关的是,控制台中显示的两个数字都是校准后重投影误差的估计值,校准过程结束时报告一个,校准样本可执行文件报告第二个数据。

+0

校准后如何获得K和D?我可以将它们写出来并稍后重新使用它们以便不破坏图像? – mans

+0

正如校准可执行文件所报告的那样,校准应该将K和D记录在XML/YML文件的某处。除非您的网络摄像机遇到严重的温度变化,否则这些系数应该保持非常稳定。 – AldurDisciple

+0

是的,他们被保存了,我怎样才能读取它们并使用这个函数呢? – mans