Haar カスケード分類器を使用した OpenCV オブジェクト検出を必要とするアプリケーションに取り組んでいます。64 ビット Windows マシンで VS2010 で OpenCV 2.3.1 を使用しています。私は OpenCV を自分でコンパイルしてビルドし、コンパイル済みのバイナリは使用しませんでした。
まず、OpenCV に含まれている facedetect.cpp の例をいじりたいと思いました。エラーなしでビルドしましたが、実行しようとすると、カスケード分類子 xml ファイルが開きません (CascadeClassifier.load() 関数は false を返します)。サンプル ソース コードから何も変更していません。
OpenCV で配布されている xml ファイルを使用しているため、xml ファイルに問題はありません。また、アプリケーションが単純な fopen を使用してファイルにアクセスして読み取ることができることも確認しました。
カスケード分類器が「古い」タイプであることが問題のように思われると思います(確かではありません)。しかし、OpenCV のドキュメントでは、新しい CascadeClassifier オブジェクトが「古い」カスケード分類子と「新しい」カスケード分類子の両方を開くことができることが明確に暗示されています。
ここにリンクがあります:http://opencv.itseez.com/modules/objdetect/doc/cascade_classification.html#cascadeclassifier-load
コンパイル済みの OpenCV2.2 バイナリを使用してみましたが、その xml でうまく動作します。その後、2.2 のサンプル ソース コードをコンパイルしようとしましたが、やはり xml を読み込めませんでした。
古いオブジェクト CvHaarClassifierCascade を使用できることは承知していますが、最新バージョンの OpenCV とそのオブジェクトを使用することを好みます。
誰かが私が間違っていることを知っていますか?