OpenCV 2.4.9 を使用してステレオ カメラを調整しようとしていますが、 を呼び出すとエラーが発生しますstereoCalibrate
。
以下は私が使用している画像です。(MS ペイントのおかげで、いくつかの奇妙な色の不具合があります)。上の 3 つの画像は左のカメラからのもので、下の 3 つの画像は右のカメラからのものです。さらにいくつかの画像ペアを使用したことに注意してください。画像は実際にはそれほど小さくなく、640x480 です。ただし、この投稿が 935837 マイルの長さにならないように、それらを縮小して一部を省略しました。
OpenCV は、チェス盤の角を問題なく検出します。を使用して表示すると、正しく表示されますdrawChessboardCorners
。それは問題ではありません。
次に、 を使用して各カメラを個別に調整しcalibrateCamera
ます。undistort
を使用して行列を使用して渡された画像を表示するcalibrateCamera
と、レンズの歪みが少しだけ過剰に補正されているように見えます。
calibrateCamera
ステップを省略し、それに応じて のフラグを調整すると、同じエラーが発生します(フラグをstereoCalibrate
に置き換えます) 。CV_CALIB_FIX_INTRINSIC
CV_CALIB_SAME_FOCAL_LENGTH | CV_CALIB_ZERO_TANGENT_DIST
次に を呼び出すと、次stereoCalibrate
のエラーが表示されます。
OpenCV Error: Assertion failed (dims == 2 && (sizes[0] == 1 || sizes[1] == 1 || sizes[0]*sizes[1] == 0))
in create, file c:/Users/s-foxk/Documents/libs/opencv/sources/modules/core/src/matrix.cpp, line 1564
...Generic Widnows Garbage...
terminate called after throwing an instance of 'cv::Exception'
what(): c:/Users/s-foxk/Documents/libs/opencv/sources/modules/core/src/matrix.cpp:1564:
error: (-215) dims == 2 && (sizes[0] == 1 || sizes[1] == 1 || sizes[0]*sizes[1] == 0) in function create
過去数時間、この問題の解決策とこのエラーに関する情報を探し、コードを少し変更しました。残念ながら、すべて無駄でした。このエラーまたはこの状況に関する情報はほとんどないようです。
このエラーはどういう意味ですか? どうすればそれを取り除くことができますか? カメラの解像度が 640x480 であることを考えると、チェス盤が遠すぎるのではないかと思いました。これが問題でしょうか?
誰かが私のコードの一部または全部を見たいと思ったら、喜んでペーストビンを作成します。