face_FaceRecognizer_train

[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
URLhttps://hsp.moe/
備考#include "OpenCvSharpExtern32.as"
#include "OpenCvSharpExtern64.as"
使用するHSPランタイムのビット数に合わせたインクルードファイルを使用すること
タイプOpenCVSharpラッパーDLL
グループNativeMethods_face_FaceRecognizer
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\OpenCvSharpExtern.hs