StereoRectifyUncalibrated不接受与FindFundamentalMat相同的数组

时间:2013-10-31 10:45:24

标签: python opencv camera-calibration

我已使用FindFundamentalMat使用CvMat我根据FindChessboardCorners生成的点创建了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

似乎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) 的点数组应该是1维,但我怎样才能为相应的点指定x和y坐标?

以前我做过:

StereoRectifyUncalibrated

错误发生在FindFundamentalMat(而不是cv.StereoRectifyUncalibrated(points1[1],points2[1],F,(320,240),H1,H2,threshold=5) )。

然后我尝试了:

{{1}}

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

1 个答案:

答案 0 :(得分:2)

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

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

cv2.StereoRectifyUncalibrated

中输入之前

它应该有用。