Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 立体矫正-ROI有不同的大小_C++_Opencv_Roi_Stereoscopy - Fatal编程技术网

C++ 立体矫正-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(

我做了一次立体校准,得到了有效的像素ROI1和2(绿色边框)。现在我想使用立体声GBM,但校准(来自立体声校正)的ROI大小不同。有人知道怎么解决这个问题吗

事实上,我做了一些事情:

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只是相机内部重新映射后的有效像素