2

OpenCVを使用して顔認識(検出ではない)を実行しようとしています。私はいくつかのコードでこの記事を見つけました:

http://www.cognotics.com/opencv/servo_2007_series/index.html

ただし、このコードは古いCスタイルのOpenCVAPIを使用して記述されています。誰かがOpenCV2.3.1のようなより新しいバージョンを使用してこれのC++APIバージョンを持っていますか?

4

2 に答える 2

10

更新:OpenCV 2.4.2には、非常に新しいcv::FaceRecognizerが付属しています。次の非常に詳細なドキュメントを参照してください。

OpenCV C ++ API(BSDライセンス)用の最新の顔認識ライブラリであるlibfacerecをリリースしました。libfacerecには追加の依存関係はなく、Eigenfacesメソッド、Fisherfacesメソッド、およびローカルバイナリパターンヒストグラムを実装します。ライブラリの一部はOpenCV2.4に含まれる予定です。

libfacerecの最新リビジョンは、次の場所で入手できます。

ライブラリは、今後のOpenCV2.4を念頭に置いてOpenCV2.3.1用に作成されたため、2.3.1より前のバージョンのOpenCVはサポートしていません。このプロジェクトは、十分に文書化されたAPIを備えたCMakeプロジェクトとして提供されます。また、性別分類に関するチュートリアルもあります。ドキュメントのHTMLバージョンは次の場所で確認できます。

これらのアルゴリズムがどのように機能するかを理解したい場合は、私の顔認識ガイド(PythonおよびGNU Octave / MATLABの例を含む)を読むことをお勧めします。

関連する出版物は次のとおりです。

  • Turk、M.、およびPentland、A.認識のための固有顔。。Journal of Cognitive Neuroscience 3(1991)、71–86。
  • Belhumeur、PN、Hespanha、J.、およびKriegman、D. Eigenfaces vs. Fisherfaces:クラス固有の線形射影を使用した認識。。パターン分析とマシンインテリジェンスに関するIEEEトランザクション19、7(1997)、711–720。
  • Ahonen、T.、Hadid、A.、およびPietikainen、M .ローカルバイナリパターンによる顔認識。。コンピュータビジョン-ECCV2004(2004)、469–481。
于 2012-04-07T19:51:18.187 に答える
3

私は、c ++ apiを使用して、技術者学位の顔認識プロジェクトを行っています。C ++での顔認識に関するすべては、C(ポインターが少ない)よりもさらに単純で、かなり単純だと思います。PCAを使用するには、ここで説明するPCAという名前のクラスがあります。適切な方法を使用し、理解してドキュメントを読んでください。入力データを使用してマトリックスを作成するために、適切なサイズのマトリックスを作成し、画像を行として貼り付けました(メソッドreshapeを使用)(cv :: Matには、マトリックスの行を簡単に取得できるメソッドがあります) )。基本データとテスト済みデータが同じパラメーター(チャネル、サイズなど)を持っていることを確認する必要があります。

編集:

     using namespace cv; //somewhere near top

データマトリックスへのデータの挿入:

    62       Mat reshaped=img.reshape(1,1);
    63       Mat dataRow=_data.row(y++);
    64       resize(reshaped,dataRow,dataRow.size(),0,0,CV_INTER_LINEAR);

主成分分析の計算:

    251 _pca(_data,Mat(),CV_PCA_DATA_AS_ROW); //compute pca 
    252 _pca.project(_data,_vectors); // project original data to new coordinates

opencvのドキュメントは世の中で最高ではないので、それを読むのに時間を費やしても問題はありません。ほとんどのcapi関数は、c ++ apiに相当するものがあります。必要なのは、「検索ウィンドウに書き込んでEnterキーを押す」検索だけです。また、C++APIを理解するためのC++のチュートリアルもあります。

于 2011-10-31T10:47:47.803 に答える