[32/64bit] 与えられたデータとラベルを使って、FaceRecognizerを学習します。
face_FaceRecognizer_train 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)
以下のソースコードは,与えられた画像群に対して,どのようにFisherfacesモデルを学習するかを示すものです.画像は imread によって読み込まれ,std::vector<Mat> に格納されます.各画像のラベルは,std::vector<int> に格納されます(CV_32SC1 型の Mat を利用することもできます).ラベルとは,この画像が属する対象(人)のことであり,同じ対象(人)は同じラベルを持つべきです.利用可能な FaceRecognizer では,ラベルの順序を気にする必要はなく,同じ人物が同じラベルを持っていることを確認するだけです: // 画像とラベルを保持しますvector<Mat> images;vector<int> labels;// CV_32SC1 型の Mat を利用します// Mat labels(number_of_samples, 1, CV_32SC1);// 最初の人物に対する画像images.push_back(imread("person0/0.jpg", IMREAD_GRAYSCALE)); labels.push_back(0);images.push_back(imread("person0/1.jpg", IMREAD_GRAYSCALE)); labels.push_back(0);images.push_back(imread("person0/2.jpg", IMREAD_GRAYSCALE)); labels.push_back(0);// 2人目用の画像images.push_back(imread("person1/0.jpg", IMREAD_GRAYSCALE)); labels.push_back(1);images.push_back(imread("person1/1.jpg", IMREAD_GRAYSCALE)); labels.push_back(1);images.push_back(imread("person1/2.jpg", IMREAD_GRAYSCALE)); labels.push_back(1);fragmentさて、いくつかの画像を読み込んだところで、新しいFaceRecognizerを作成してみましょう。この例では、Fisherfaces モデルを作成し、可能なすべての Fisherfaces を保持することにします: // 新しい Fisherfaces モデルを作成し、利用可能なすべての Fisherfaces を保持します、 // これはこの特定の FaceRecognizer の最も一般的な使用法です。//Ptr<FaceRecognizer> model = FisherFaceRecognizer::create();fragmentそして最後に,与えられたデータセット(顔画像とラベル)に対してこれを学習させます: // これは,利用可能な cv::FaceRecognizer// のすべての実装を学習させるための,共通のインタフェースです: //model->train(images, labels);fragment 元関数名(C#): face_FaceRecognizer_train 元DLLエクスポート名: face_FaceRecognizer_train 参照元CSファイル: Internal\PInvoke\NativeMethods\face\NativeMethods_face_FaceRecognizer.cs ▼ C言語側関数定義
CVAPI(ExceptionStatus) face_FaceRecognizer_train( 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->train(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 |