我有两个不同相机(不同分辨率)的立体声校准参数。我想将此数据用于立体声校正和计算视差图。问题是来自两个相机的图像具有不同的尺寸,我不知道如何指定这些尺寸。假设两个图像的大小相同,cvStereoRectify只占一个大小。
这方面的任何建议都将受到高度赞赏。
此致
汗
答案 0 :(得分:1)
您是否尝试在更高分辨率的相机上使用感兴趣的区域?例如,假设您有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);
希望这有用!
答案 1 :(得分:1)
我在执行立体声校准时遇到了同样的问题。 可以通过设置图像尺寸参数
来解决 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 camera1\n"); 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 camera2\n"); return -1;}