OpenCv中两个不同摄像机的立体声校正



我有两台不同相机(不同分辨率)的立体校准参数。我想用这些数据来进行立体校正和计算视差图。问题是两个摄像头的图像尺寸不一样,我不知道如何指定这些尺寸。cvStereoRectify只接受一个大小,假设两个图像的大小相同。

如有任何建议,我将不胜感激。

问候,汗

您是否尝试过在高分辨率相机上使用感兴趣的区域?例如,假设您有一个640x480的相机和一个800x600的相机。您可以这样做:

VideoCapture videoLo(LOW), videoHi(HIGH);
Mat loRes, hiRes;
Point hiCenter(hiRes.size().width / 2, hiRes.size().height / 2);
int key = 0;
do
{
    videoLo >> loRes;
    videoHi >> hiRes;
    // this will give you the center 640x480 of the high res image.
    Mat hiResWin(hiRes, Rect(hiCenter.x - loRes.size().width / 2, 
                             hiCenter.y - loRes.size().height / 2,
                             loRes.size().width,
                             loRes.size().height));
    key = waitKey(33);
} while((char)key != 27);

希望这对你有帮助!

我曾经在进行立体声校准时遇到过同样的问题。可以通过设置图像大小参数

来解决
    captureR = cvCreateCameraCapture( 0 );  // from camera 1
    cvSetCaptureProperty(captureR, CV_CAP_PROP_FRAME_WIDTH, 640);
    cvSetCaptureProperty(captureR, CV_CAP_PROP_FRAME_HEIGHT, 480);
    if(!captureR) { printf("nCouldn't open the camera1n"); return -1;}
    captureL = cvCreateCameraCapture( 1 ); //from camera 2
    cvSetCaptureProperty(captureL, CV_CAP_PROP_FRAME_WIDTH, 640);
    cvSetCaptureProperty(captureL, CV_CAP_PROP_FRAME_HEIGHT, 480);
    if(!captureL) { printf("nCouldn't open the camera2n"); return -1;}

相关内容

  • 没有找到相关文章

最新更新