4

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 とそのオブジェクトを使用することを好みます。

誰かが私が間違っていることを知っていますか?

4

4 に答える 4

6

xml ファイルの完全なパスを指定します

String face = "c:/data/xml/haarcascade_frontalface_alt.xml";

それはうまくいくはずです!

于 2012-01-23T13:27:35.643 に答える
6

私も同じ状況でした。デバッグ構成でリリースライブラリをリンクしていることに気付いたときに解決しました。に変更opencv_231*.libするとopencv_*231d.lib、問題は解決しました。

CascadeClassifier::loadこのような問題を引き起こす関数は だけではありません。詳細については、このスレッドを参照してください: OpenCV imread(filename) fails in debug mode when using release libraries

于 2013-05-31T20:23:52.100 に答える
2

Windows を使用している場合は、パスを確認してください。懸念は

  1. パスのエスケープ シーケンス。
  2. オペレーティング システムに応じてスラッシュまたはバック スラッシュ。

のようになるはずですC:\\Ceemple\\data\\haarcascades\\haarcascade_frontalface_alt.xml。(ちなみに私はCeemple IDEを使用しています)

于 2015-02-28T06:20:53.923 に答える
2

notepad ++を使用してこれを機能させました。関連するすべてのxmlファイルをANSIに変換し、最初の行も削除し<?xml version="1.0"?>てから手動で書き直しました。

于 2013-10-10T17:24:27.403 に答える