C++ 立体矫正-ROI有不同的大小
我做了一次立体校准,得到了有效的像素ROI1和2(绿色边框)。现在我想使用立体声GBM,但校准(来自立体声校正)的ROI大小不同。有人知道怎么解决这个问题吗 事实上,我做了一些事情:C++ 立体矫正-ROI有不同的大小,c++,opencv,roi,stereoscopy,C++,Opencv,Roi,Stereoscopy,我做了一次立体校准,得到了有效的像素ROI1和2(绿色边框)。现在我想使用立体声GBM,但校准(来自立体声校正)的ROI大小不同。有人知道怎么解决这个问题吗 事实上,我做了一些事情: Rect roiLeft(...); Rect roiRight(...); Mat cLeft(rLeft, roiLeft); //Mat cRight(rRight, roiRight); // not same size... Mat cRight(cRight, roiLeft); stereoBM(
Rect roiLeft(...);
Rect roiRight(...);
Mat cLeft(rLeft, roiLeft);
//Mat cRight(rRight, roiRight); // not same size...
Mat cRight(cRight, roiLeft);
stereoBM(cLeft,cRight, dst);
如果我用这个roi裁剪我的图像,图片的中间点会是一样的吗
它起作用了
为什么不在(未截取的)校准图像上运行stereoBM,然后您可以在之后使用这些ROI来掩盖结果的无效位
stereoBM(rLeft,rRight, disp);
//get intersection of both rois or use target image roi, if you know the target image
cv::Rect visibleRoi = roiLeft & roiRight;
cv::Mat cDisp(disp,visibleRoi);
现在,对于不同大小的输入或不同的中心等,您没有任何问题
干杯为什么不在(未截取的)校准图像上运行stereoBM,然后您可以使用这些ROI来掩盖结果的无效位
stereoBM(rLeft,rRight, disp);
//get intersection of both rois or use target image roi, if you know the target image
cv::Rect visibleRoi = roiLeft & roiRight;
cv::Mat cDisp(disp,visibleRoi);
现在,对于不同大小的输入或不同的中心等,您没有任何问题
干杯根据
光轴与像面相交处的点R。该点称为主点或图像中心
所以我不认为中心会是一样的。
提到这里,在其中一个示例中,对于640x480像素相机,主点为302.71656242.33386,这表明主点和图像中心不相同。根据
光轴与像面相交处的点R。该点称为主点或图像中心
所以我不认为中心会是一样的。
提到在其中一个示例中,对于640x480像素的相机,主点为302.71656242.33386,这表明主点和图像中心不相同。在未截取的校正图像上运行块匹配器,然后使用
cv::getValidDisparityROI(roi1, roi2, minDisparity, numberOfDisparities, SADWindowSize);
该调用返回一个cv::Rect,它将是左图像和视差贴图中所有有效像素的边界框。有效像素仅为两个摄影机都可以“看到”的像素(对遮挡边的警告)
一旦你有了视差贴图,正确的图像就变得无用了
请注意,StereoRective返回的roi仅为相机内部重新映射后的有效像素。在未剪切的已校正图像上运行块匹配器,然后使用
cv::getValidDisparityROI(roi1, roi2, minDisparity, numberOfDisparities, SADWindowSize);
该调用返回一个cv::Rect,它将是左图像和视差贴图中所有有效像素的边界框。有效像素仅为两个摄影机都可以“看到”的像素(对遮挡边的警告)
一旦你有了视差贴图,正确的图像就变得无用了
请注意,从StereoRective返回的roi只是相机内部重新映射后的有效像素