最初は、WinXp の Visual 2008 で OpenCV 2.4.2 を使用しています。問題は次のとおりです。
imwrite
次のプロトタイプを持つグレーレベルの画像を書き込む関数を使用しています。
bool imwrite( const string& filename, InputArray img, const vector<int>& params=vector<int>());
画像タイプは事前にチェックして設定します(8bit、1チャンネル)。ただし、リリース モードでのみ例外が発生し (エラー -2、指定された拡張子のライターが見つかりませんでした)、私の場合は bmp イメージを書き込みます.\Images\Debug\calibration_ref.bmp
。このファイル名の何が問題なのかわかりませんでした。
dll ソース ファイル (opencv_highgui242d.dll、loadsave.cpp、l.298) を詳しく調べたところconst std::string & filename
、<Bad Ptr>
. この結果を得るために、私はリリース モードで highgui デバッグ バージョンの dll を使用しました。すべての引数が破損していると思われます。
この腐敗がどこから来たのか、私にはまったくわかりません!あちこち検索しましたが、リリースモードでの最適化の無効化、バグ修正、およびスレッドセーフに関する文字列クラスに関するこの記事に関連するものしか見つかりませんでしたが、それが問題かどうかはわかりません。
私が使用している OpenCV のバージョンはパッケージではないことを付け加えておきます。特にTBB(ver 4.0 6005)でビルドしました。お気軽に質問してください。