StereoRectifyUnbaserated 不接受与 FindFundamentalMat 相同的阵列



我用FindFundamentalMat和我从FindChessboardCorners生成的点创建的CvMat一起使用。文档指定StereoRectifyUncalibrated可以使用与FindFundamentalMat相同的对应点格式。

但是,当我尝试使用StereoRectifyUncalibrated时,出现以下错误:

OpenCV Error: Assertion failed (CV_IS_MAT(_points1) && CV_IS_MAT(_points2) && (_points1->rows == 1 || _points1->cols == 1) && (_points2->rows == 1 || _points2->cols == 1) && CV_ARE_SIZES_EQ(_points1, _points2)) in cvStereoRectifyUncalibrated, file /home/moos/prog/opencv/OpenCV-2.1.0/src/cv/cvcalibration.cpp, line 2539 

似乎 StereoRectifyUncalibrated 的点数组应该是 1 维的,但是我如何为相应的点指定 x 和 y 坐标呢?

以前我做过:

cv.FindFundamentalMat(points1,points2,F,method=cv.CV_FM_RANSAC,param1=1.,param2=cv.CV_FM_8POINT)
cv.Save("F.xml",F);
cv.StereoRectifyUncalibrated(points1,points2,F,(320,240),H1,H2,threshold=5)

错误发生在 StereoRectifyUncalibrated 处(而不是在 FindFundamentalMat 处)。

然后我尝试了:

cv.StereoRectifyUncalibrated(points1[1],points2[1],F,(320,240),H1,H2,threshold=5)

没有发生错误!但我不确定我做得对不对。

所以按照上面的opencv-users链接,我明白你必须这样做

points1r = points1.reshape((points1.shape[0] * 2, 1))

在输入cv2.StereoRectifyUncalibrated之前

它应该有效。

相关内容

  • 没有找到相关文章

最新更新