はじめまして!どうもJichouPです
この記事について
この記事はわからない人向けのチュートリアルでもなければリファレンスでもありません
(´-`).。oO(OpenCVって聞いたことあるけどどんなことが出来るんだろう・・・)
って感じの人向けに、出来ることの一例が書いてあるだけのよわよわな記事です
OpenCVって?
画像処理に特化したライブラリです
導入してなくても画像処理をすることはできますが、使うととても楽になります!
使える言語
OpenCVを導入できる言語は以下の4つです(公式はサポートしてないけど他にも使える言語があるらしい)
- C/C++
- Python
- Java
- MATLAB
以上からお好きなものをお選びください・・・と言いたいところなのですが・・・
C/C++の場合は導入するのがかなり大変なので、「ちょっと遊んでみるだけ」な人はPythonを選ぶことをおすすめします
ちなみに、私はC++を選んだのですが、私はVisualStudioの環境構築をしたのは初めてだったので、OpenCVを導入するまでに2週間ほどかかりました(カカリスギィ!!!)
JavaとMATLABは軽く触れただけなので私からはなんとも言えません・・・
導入方法(C/C++)
こちらからダウンロードできます
私はこちらのサイトを参考にさせていただきました!ありがとうございます!
Visual Studio 2017にOpenCV3.2.0とopencv_contribを導入する方法
どんなことができるの?
- 様々なフォーマットの画像の読み込み
- (JPEG, PNG, BMP・・・などなど)
- 画像の処理処理(ぼかし、ノイズ除去、色変換、2値化、拡大縮小など)
- カメラを使ってリアルタイムで顔認識
- ステレオマッチング(2台のカメラを用いて立体的な構造を検出する)
- テンプレートマッチング
テンプレートマッチング
私はテンプレートマッチングで少し遊んでみたので紹介してみます
テーマは「艦これの自動化」です
※マクロは規約違反ですので気をつけてください
テンプレートマッチングって?
テンプレートマッチングとは、オリジナル画像とテンプレート画像を用意して、オリジナル画像の中にどのくらいテンプレート画像と似たものがあるかを調べる機能です
言葉で言っても分かりづらいので、一例をお見せします
オリジナル画像
テンプレート画像
マッチング結果
このように、テンプレート画像を用意すればオリジナル画像の中で似ている部分を見つけることができます
また、その部分がテンプレートとどのくらい似ているかも取得できます
似ているか似ていないか曖昧なものでも、しきい値を自由に設定できるので、精度は下がりますがマッチングできます
どうやってマッチングしてるの?
物体検出 — opencv 2.2 documentation - OpenCV.jp
このドキュメントに詳しい測定方法が書いてあります
今回は一番下の"CV_TM_CCOEFF_NORMED"という手法で測定しました
艦これでもやってみた
艦これで小破・中破・大破それぞれの認識をやってみました
めんどいので画像を一つにつなげてます
オリジナル画像
テンプレート画像
マッチング結果
という感じで、しっかり小破、中破、大破の判定ができたようです(一部ガバガバですが・・・)
これによって、通信内容を見ることなく艦娘の損害を確認できるようになりました
いろいろと悪いことが楽しいことができそうです
以上で私の記事は終わりです
明日はmimikkuさん、kanjiさんの記事です
お楽しみに!