AutoIt OpenCV4.2を使って画面内 画像認識 速度も

autoit opencv2.4 4.2 ブログ

前回はOpenCV2.4を使ったOpenCV-Match UDFを使いました。2020年1月現在のOpenCVは4.2です。これを使いたいのですがC のインターフェースはOpenCV3とかでなくなったので、DllCall()が使えません。簡単に実現するにはPythonに移行するところなのですが、AutoItの記事書いているので・・・下記を大変参考にさせていただき、Match UDFとの速度差も見てみました。

スポンサーリンク

1. 結果だけでなく過程も見てくださいブログの記事を参考にする

「結果だけでなく過程も見てくださいブログ」の記事が凄いです。というわけでこちらを参考にすればOKです。

Visual Studio2019, OpenCV4.2は上記ブログでのVisual Studio2017, OpenCV3.4とほぼ同じ構成なので行けます。

1.1 OpenCV4.xビルドについてはこちらが参考に

ゼロから作るRPA その2 画像一致によるクリック編(OpenCV) - Qiita
はじめに RPAではどんなに頑張ってもクリックさせることができないものとかがよく出てきます。 そんなときの最終手段が、画像一致によるクリックです。 ここでは、その実装方法を説明します。 概要 OpenCVにはcv::mat...

2. OpenCV Match UDF(2.4)とOpenCV4.2(dll内マッチ)の速度

当然ですがOpenCV4.2のwrapper dllの圧勝でした。
OpenCLにチェックしてビルドしているからなのでしょうかね?
Core i5 7500HQ Intel HD 650, GTX1050 ノートPCで実行すると微妙にGPU使用率上がるので使われているのかな?(Cmake時CUDAはチェック外しています)

Match UDFが1,000msecに対してOpenCV4.2ラッパーdllだと230msecほど。CPUのクロックがバラバラなので何とも言えませんが、画面内画像マッチに限って言うと一度作ればその関数使うだけなので高速なほうを使いたいですね。

あと、作成したthreshold=0.981fなのでMatch UDFのほうも同様に0.981にすると、背景が薄いグレーになるとマッチングしません。

下記の画像でOpenCV4.2は認識。MatchUDF(2.4)は駄目でした。Thresholdの扱いかと。

アイコン
アナリティクス2

3. matchTemplate()をググってパラメータ調整

matchTemplate thresholdあたりでググってパラメータを見てみたりして、引数変更したりしましょう。

テンプレートマッチング — OpenCV-Python Tutorials 1 documentation
OpenCV実験python3 テンプレート比較で特定の形の図が存在するか判定 cv2.matchTemplate実験 その2 | 北館テック.com
引き続きこちらを参考に続けます。 その1ではマッチした形をひとつしか四角で囲っていませんが、次は複数個四角で囲ってみます。 また形のピクセルサイズが違うと基本的にはマッチングでき...

4. pythonのようなwrapper生成機能があれば・・・

OpenCVのソースにはPythonで使えるWrapper生成機能が入っているんですよね。

OpenCV-Pythonの紐づけ(Bindings)がどのように動作するのか? — OpenCV-Python Tutorials 1 documentation

ここまで来ると他のOpenCV関数使うようなことがあるならPythonのほうが良いですね・・・

コメント

タイトルとURLをコピーしました