0

によって生成されたポイントから作成した を使用FindFundamentalMatしました。ドキュメントでは、 が と同じ形式の対応点を使用できると指定しています。CvMatFindChessboardCornersStereoRectifyUncalibratedFindFundamentalMat

ただし、を使用しようとすると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 

の点の配列はStereoRectifyUncalibrated1 次元である必要があるようですが、対応する点の 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)

エラーは発生しませんでした!しかし、それが正しいかどうかはわかりません。

4

1 に答える 1

2

上記のリンクをたどると、opencv-usersあなたがしなければならないことがわかりました

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

入れる前にcv2.StereoRectifyUncalibrated

そして、それはうまくいくはずです。

于 2014-10-15T12:31:28.913 に答える