ヴィジュアルスタジオのC#では、ライブラリが簡単に利用できるようになっています。
顔認識や言語の形態解析なども、結構簡単に試せます。
形態素解析
言語を分析したり、機械学習させたりする場合、前処理として言語を分解する必要があります。
つまり、「私の名前はカルメンです」とあったら、「私」「の」「名前」「は」「カルメン」「です」と分けてから分析を行います。
このような処理(形態素解析)を行ってくれるのが、MeCabのライブラリです。
「参照の追加>NuGetパッケージの管理」を行い、「参照」タブから「MeCab」関連のものを探します。
「NMeCab」というのがあるのでインストールします。
ボタンを押したら解析結果を適すボトックスに表示するようフォームを作ります。
あとはプログラムでMeCabの利用ができるように宣言します。
using NMeCab;
プログラムでは「MeCabParam 」「MeCabTagger」「MeCabNode 」などを使って解析します。
分析する文章「sResource」と出力結果用テキスト「sResult」を使って以下のようにソースを書きます。
try
{
string sSource = "私の名前はカルメンです。";
string sResult = "";
MeCabParam mcParam = new MeCabParam();
mcParam.DicDir = @"..\..\..\packages\NMeCab.0.06.4\content\net45\dic\ipadic";
MeCabTagger mcTagger = MeCabTagger.Create(mcParam);
MeCabNode mcNode = mcTagger.ParseToNode(sSource);
while (mcNode != null)
{
if (mcNode.CharType > 0)
{
sResult = sResult + mcNode.Surface + "\t" + mcNode.Feature + "\r\n";
}
mcNode = mcNode.Next;
}
textBox1.Text = sResult;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
辞書を指定する必要があり、今回はパッケージ内にある辞書のパス「@"..\..\..\packages\NMeCab.0.06.4\content\net45\dic\ipadic"」を指定しましたが、必要に応じて(例えばダウンロードした辞書を使う場合など)適宜変更してください。
これで実行すると、無事以下のように結果が表示されました。
参考:
OpenCVで顔認識のサンプル
OpenCVで顔認識のサンプルは、こちらが丁寧で分かりやすいです。
C#とOpenCVSharpで画像処理!(Visual Studio 2019) | 千草ウェブ
うちで試したライブラリは「OpenCvSharp3-AnyCPU」で、NuGetを使ってインストールします。
C#からは、まずライブラリの利用をコードで宣言します。
using OpenCvSharp;
using OpenCvSharp.Extensions;
使う変数は以下のようなものです。
CascadeClassifier cascade;
VideoCapture capture = new VideoCapture();
Mat normalFrame = new Mat();
ビデオカメラの入力を取得します。
int cameraNum=0;//カメラの番号
capture.Open(cameraNum);
Matオブジェクトに読み込ませます。
capture.Read(normalFrame);
顔認識のデータファイルへのパスを指定します。
sPath= "haarcascade_frontalface_alt2.xml";
cascade = new CascadeClassifier(sPath);
あとは、rectを取得し、矩形を描くなどの処理を顔の回数分ループします。
foreach (Rect rectFace in cascade.DetectMultiScale(normalFrame))
{
Rect rect = new Rect(rectFace.X, rectFace.Y, rectFace.Width, rectFace.Height);
Cv2.Rectangle(normalFrame, rect, new OpenCvSharp.Scalar(255, 0, 255), 2);
}
顔認識ではOpenCVの「haarcascade_frontalface_default.xml」などをダウロードしておく必要があります。
精度はデータファイルによってかわってきます。
同じ顔用でも結構認識には違いが出るようで、いろいろ試してみるとよさそうです。
いかに試した実例が紹介されています。
OpenCV 使用可能なCascadeClassifierの種類と効果 - Symfoware