2017-01-08 20 views
0

stereoCalibrate()の入力として使用するdistCoeffsを取得するためにopenCVのcalibrateCamera()を使用しています。openCV stereoCalibrate - アサーションが失敗しました(D1.empty()||(D1.total()== 4))

OpenCVのエラー:しかしstereoCalibrate()を呼び出すと、私は次のエラーメッセージを表示しますアサーション(D1.empty()||(D1.total()== 4))stereoCalibrateでは

デバッグ私がいることを伝えませんでしたD1.total()は5で、空ではないことを示します。私はdistCoeffs(D1)を変更していないので、それ以上の変更なしにstereoCalibrate()の入力パラメータとして適していると思った。

org.opencv.calib3d.Calib3d.calibrateCamera(objectPoints, cheesboardCornersList, chessboardImg.size(), intrMatrix1, distCoeffs1, rvecs1, tvecs1); 

org.opencv.calib3d.Calib3d.calibrateCamera(objectPoints, cheesboardCornersList, chessboardImg.size(), intrMatrix2, distCoeffs2, rvecs2, tvecs2); 

... 

org.opencv.calib3d.Calib3d.stereoCalibrate(objectPoints, imagePoints1, imagePoints2, intrMatrix1, distCoeffs1, intrMatrix2, distCoeffs2, img1.size(), R, T, org.opencv.calib3d.Calib3d.CALIB_FIX_INTRINSIC); 

(Javaの、OpenCVの3.1)

答えて

1

私はstereoCalibrate()とまったく同じ問題を抱えていました。 しかし、Calib3dにはstereoCalibrateの別のバージョンが1つあります。

public static double stereoCalibrate(java.util.List<Mat> objectPoints, 
            java.util.List<Mat> imagePoints1, 
            java.util.List<Mat> imagePoints2, 
            Mat cameraMatrix1, 
            Mat distCoeffs1, 
            Mat cameraMatrix2, 
            Mat distCoeffs2, 
            Size imageSize, 
            Mat R, 
            Mat T, 
            Mat E, 
            Mat F) 

look here

差は、方法のこのバージョンはまた、必須マトリックスEと基本マトリックスFを返すことです。 これは私にとって助けになりました。 bytedecoのJavaCVラッパーを使用しましたが、問題ではないと思います。ネイティブメソッドは同じです。

関連する問題