困ったー

WIN10・アプリ・ゲームで困ったことを調べてみた

「こまったー」は困ったことを調べたブログです。

コロナ対策 |  Teams |  エクセル |  VisualStudio | 

スポンサーリンク


【Visual Studio 2019】C#で顔認識や日本語解析のサンプル

ヴィジュアルスタジオのC#では、ライブラリが簡単に利用できるようになっています。

顔認識や言語の形態解析なども、結構簡単に試せます。

形態素解析

New Alphabet

言語を分析したり、機械学習させたりする場合、前処理として言語を分解する必要があります。

つまり、「私の名前はカルメンです」とあったら、「私」「の」「名前」「は」「カルメン」「です」と分けてから分析を行います。

 

このような処理(形態素解析)を行ってくれるのが、MeCabのライブラリです。

 

「参照の追加>NuGetパッケージの管理」を行い、「参照」タブから「MeCab」関連のものを探します。

「NMeCab」というのがあるのでインストールします。

f:id:apicode:20190906083310p:plain

 

ボタンを押したら解析結果を適すボトックスに表示するようフォームを作ります。

f:id:apicode:20190906083548p:plain

 

あとはプログラムで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"」を指定しましたが、必要に応じて(例えばダウンロードした辞書を使う場合など)適宜変更してください。

 

これで実行すると、無事以下のように結果が表示されました。

f:id:apicode:20190906083839p:plain

 

参考:

NMeCabで形態素解析してみよう - Qiita

 

 

OpenCVで顔認識のサンプル

Facial Recognition

OpenCVで顔認識のサンプルは、こちらが丁寧で分かりやすいです。

C#とOpenCVSharpで画像処理!(Visual Studio 2019) | 千草ウェブ

 

うちで試したライブラリは「OpenCvSharp3-AnyCPU」で、NuGetを使ってインストールします。

f:id:apicode:20190912215057p:plain

 

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

 

 

[C#関連記事]

  1. 【Visual Studio 2019】C#の始め方 - 困ったー
  2. 【Visual Studio 2019】C#のエラーと対策 - 困ったー
  3. 【C#】ツールボックス 一覧 - 困ったー
  4. 【Visual Studio】C#でフォームの使い方 フル画面?半透明?バーを消す?
  5. 【VisualStudio】C#のボタンとは?使い方は?
  6. 【VisualStudio】C#のパネルとは?使い方は?
  7. 【Visual Studio】C#で表・テーブルを使うには?
  8. 【Visual Studio】C#でスクレイピング
  9. 【Visual Studio】C#で文字やファイルを扱うには? - 困ったー
  10. 【Visual Studio】C#で画像やサウンドを扱うには? - 困ったー
  11. 【Visual Studio】C#で動画を制御するには?ビデオ入力表示は?
  12. 【Visual Studio】C#でインターネット関数の使い方 - 困ったー
  13. 【Visual Studio】C#で顔認識や日本語解析のサンプル - 困ったー
  14. 【Visual Studio】C#からMySqlの使い方 接続するには?SQL文を実行するには?

 

[Visual Studio 2019関連記事]

  1. Visual Studio 2019 無料で使うには?ダウンロードするには?
  2. インストーラ作成のまとめ アイコンは?.NET Frameworkを含めるには?
  3. Visual Source Codeとは?Visual Studio 2019との違いは?

このブログは、ネットや書籍上の情報、個人の体験や感想を中心にまとめたものです。 正確性を期していはいますが、間違い・誤訳等あるかもしれません。 当サイトの情報によって生じたいかなる損失について一切の責任を負わないものとします. あらかじめご了承ください。

利用規約・プライバシーポリシー |〇問い合わせ