在实时视频捕获应用程序中使用摄像机校准参数

时间:2013-10-20 18:31:33

标签: opencv video camera calibration

所以,我正在从廉价的USB网络摄像头中捕捉视频。然后我从这个饲料计算光流。我终于使用这些optic-flow measurements进行(monocular)机器人导航。我已经校准了相机,并在两个单独的intrinsic文件中包含distortionxml个参数。

我的问题是,如何在我的视频捕获代码中使用这些参数。如果有人可以使用code/pueudo-code来表示,那将非常有帮助。

1 个答案:

答案 0 :(得分:1)

首先,在xml文件中加载内在失真。

然后,使用像打击这样的代码来纠正原始图像。

IplImage* mapx = cvCreateImage( cvGetSize(image), IPL_DEPTH_32F, 1 );
IplImage* mapy = cvCreateImage( cvGetSize(image), IPL_DEPTH_32F, 1 );
  cvInitUndistortMap(
    intrinsic,
    distortion,
    mapx,
    mapy
  );
IplImage *t = cvCloneImage(image);
cvShowImage( "Raw Video", image ); // Show raw image
cvRemap( t, image, mapx, mapy );     // Undistort image
cvShowImage("Undistort", image);     // Show corrected image

如果您已经安装了OpenCV,可以在opencv2.4.x \ samples \ cpp中找到一些示例代码,这部分通常在校准程序中。