[32/64bit] 与えられたデータと関連付けられたラベルを用いて,FaceRecognizer を更新します.
face_FaceRecognizer_update p1,p2,p3,p4,p5
p1 = sptr : IntPtr obj p2 = sptr : IntPtr[] src p3 = int : int srcLength p4 = var : int[] labels p5 = int : int labelsLength
(プラグイン / モジュール : OpenCvSharpExtern.dll)
このメソッドは,(おそらく学習済みの)FaceRecognizer を更新しますが,アルゴリズムがそれをサポートしている場合に限ります.LBPH(Local Binary Patterns Histograms)認識器(createLBPHFaceRecognizerを参照)を更新することができます。EigenfacesとFisherfacesメソッドの場合、これはアルゴリズム的に可能ではなく、FaceRecognizer::trainでモデルを再推定する必要があります。いずれにしても、train の呼び出しは既存のモデルを空にして新しいモデルを学習しますが、update はモデルデータを削除しません。// 新しい LBPH モデルを作成し(更新可能)、デフォルトのパラメータを使用します // これは、この特定の FaceRecognizer の最も一般的な使い方です: //Ptr<FaceRecognizer> model = LBPHFaceRecognizer::create();// これは、利用可能なすべての cv を学習するための共通のインタフェースです。:FaceRecognizer// implementations://model->train(images, labels);// 新しい画像を格納するいくつかのコンテナ:vector<Mat> newImages;vector<int> newLabels;// コンテナに画像を追加する必要があります://// ...//// ここで,モデルを更新します....//// モデルの更新は,呼び出すだけで簡単に行えます:model->update(newImages,newLabels);// これにより,古いモデルデータが保存され,既存のモデル//を newImages から抽出された新しい特徴で拡張します!fragment更新をサポートしない Eigenfaces モデル(EigenFaceRecognizer::create を参照)に対して update を呼び出すと,以下のようなエラーが発生します:OpenCV Error:The function/feature is not implemented (This FaceRecognizer (FaceRecognizer.Eigenfaces) does not support updating, you must have to use FaceRecognizer::train to update it.) in update, file /home/philipp/git/opencv/modules/contrib/src/facerec.cpp, line 305terminate called after throwing an instance of 'cv::Exception'fragmentNote FaceRecognizer は,あなたのトレーニング画像を保存しません.それは,非常にメモリを消費するからであり,また,そうすることは FaceRecognizer の責任ではないからです.呼び出し側は、作業したいデータセットを維持する責任があります。 元関数名(C#): face_FaceRecognizer_update 元DLLエクスポート名: face_FaceRecognizer_update 参照元CSファイル: Internal\PInvoke\NativeMethods\face\NativeMethods_face_FaceRecognizer.cs ▼ C言語側関数定義
CVAPI(ExceptionStatus) face_FaceRecognizer_update( cv::face::FaceRecognizer *obj, cv::Mat **src, int srcLength, int *labels, int labelsLength) { BEGIN_WRAP std::vector<cv::Mat> srcVec(srcLength); for (auto i = 0; i < srcLength; i++) srcVec[i] = *src[i]; const std::vector<int> labelsVec(labels, labels + labelsLength); obj->update(srcVec, labelsVec); END_WRAP }
プラグイン / モジュール | OpenCvSharpExtern.dll |
バージョン | 1.00 |
作成日 | 2021/11/30 |
著作者 | inovia |
URL | https://hsp.moe/ |
備考 | #include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as" 使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること |
タイプ | OpenCVSharpラッパーDLL |
グループ | NativeMethods_face_FaceRecognizer |
対応環境 |
|
hs ファイル | hsphelp\OpenCvSharpExtern.hs |