我正在使用此代码来纠正立体图像对:
stereoRectify(cm, Mat(), cm, Mat(),imageSize,
RT_d,tt,R1,R2,P1,P2,Q,CALIB_ZERO_DISPARITY,
0.9, imageSize, &validROI[0], &validROI[1]);
initUndistortRectifyMap(cm, Mat(), R1, P1, imageSize, CV_16SC2, rmap[0][0], rmap[0][1]);
initUndistortRectifyMap(cm, Mat(), R2, P2, imageSize, CV_16SC2, rmap[1][0], rmap[1][1]);
remap(v1.img, rimg1, rmap[0][0], rmap[0][1], INTER_LINEAR);
remap(v2.img, rimg2, rmap[1][0], rmap[1][1], INTER_LINEAR);
整顿工作顺利。
现在我需要将整流后的图像rimg1中的每个像素(x,y)与v1.img中的初始像素(x0,y0)相匹配。我该怎么做?我在哪里可以获得公式,如何使用P1和R1?感谢名单!
答案 0 :(得分:0)
我发现您需要切换存储模式:
initUndistortRectifyMap(cm, Mat(), R1, P1, imageSize, CV_32FC1, rmap[0][0], rmap[0][1]);
initUndistortRectifyMap(cm, Mat(), R2, P2, imageSize, CV_32FC1, rmap[1][0], rmap[1][1]);
然后你可以轻松获得映射:
auto x0 = rmap[0][0].at<float>(Point(x, y));
auto y0 = rmap[0][1].at<float>(Point(x, y));