OpenCvSharpとWindows FormsアプリケーションでDnnモジュールを使う例。
GPUを使いたい人はこっちの記事参照
プロジェクトを作ってNugetパッケージからOpenCvSharp4.WindowsとOpenCvSharp4.runtime.winを入れてる。たぶんOpenCvSharp4とOpenCvSharp4.runtime.winが正しいような気もするが気にしない。
ソースの通りなのだが
- CvDnn.ReadNetFrom* で推論用のファイルを読む
- BackendとTargetを指定(しなければCPUになる)
- CvDnn.BlobFromImageで推論用にデータ(blob)を整形
- SetInputでblobを渡す
- 出力層を取得してForwardで推論
という流れ。後は最も良い結果を抽出して表示なりする。
画像をImage.FromFile→Graphics.FromImageでcanvasを取得して,そこにDrawRectangleとかDrawStringしたうえでPictureBoxの画像に指定する。 貰うのがBBoxの中心(x,y)と幅高さな点に注意。
非同期にダウンロードしたかったのでasyncを使うまでは良かったが,プログレスバーのやりかたが分からず探してたら HttpClientProgressExtensionsが全部解決してくれた。