APIを使って顔の類似度を判定する1の続きです。Detectを使用して、まずはFaceIDなどの必要な情報を取得してきました。FindSimilarによる類似度判定や、OpenCVSharpでの顔検出箇所の描画を行っていきます。Detectから取得した顔情報は、以下のようなList<FaceInfo>型に整形してMainメソッドで受け取りました。FaceInfoは検出時のFaceIDと検出箇所の座標、それが比較元と比較先画像のどちらから検出したものなのかという情報を持つ独自クラス型です。OpenCVSharpで検出箇所を画像に描画する今のままでは1枚の画像から複数人の顔が検出された際に誰が誰だかわからないので、最低限検出した箇所と、その際に割り当てられたFaceIDを描画したいと思います。ライブラリであるOpenCVSharp(OpenCVのラッパー)を使用します。OpenCVSharp3の追加NuGetからインストールします。VisualStudioのメニューから「プロジェクト」→「NuGetパッケージの管理」を選択してください。管理画面が表示されたら、「参照」の検索窓から「opencvsharp」と検索し、「OpenCvSharp3-AnyCPU」をインストールしましょう。現時点での最新版は「4.0.0.20181129」でした。インストールが成功すると、ソリューションエクスプローラー上で参照に色々追加されているのが確認できると思います。ついでにusingにもOpenCvSharpを追加しておきましょう。OpenCvSharp;描画用メソッドの実装それでは、実際にOpenCVSharpを使用して描画する為のメソッドを追加します。以下の2つのメソッドをFaceFindSimilarクラス内に追加してください。}dispImageByOpenCVメソッドではLinqで比較元画像の顔情報と比較先画像の顔情報を分けてあげて、ShowImageメソッドでそれぞれの画像に対してCv2.RectangleやCv2.PutTextで顔周りの四角い枠とFaceIDを描画しています。Mainメソッドに呼び出し処理を追加ではdispImageByOpenCVをMainメソッドから呼び出してみましょう。dispImageByOpenCVメソッドはMainメソッドから引数として以下を受け取ります。Console.WriteLine("顔が検出できました。Console.WriteLine("顔が検出できませんでした。From(~To)が呼び出し箇所です。戻り値もないので、それぞれのファイルパスと顔情報のリストをそのまま渡しただけですね。描画した画像ウィンドウを閉じるCv2.DestroyAllWindows();も忘れずに記述しましょう。ここまででF5実行すると、以下のように顔周りに赤い四角い枠とFaceIDが描画されると思います。以上で画像の描画処理は終了となります。FindSimilarを使用して類似度の判定を行いましょう。以下をコピペして、using4つとメソッド1つとクラス2つを追加してください。書いといてなんですが、詰め込みすぎですね。