2017年11月28日 | ブログ記事

OpenCVを使って画像認識をやってみよう

JichouP

はじめまして!どうもJichouPです

この記事について

この記事はわからない人向けのチュートリアルでもなければリファレンスでもありません
(´-`).。oO(OpenCVって聞いたことあるけどどんなことが出来るんだろう・・・)
って感じの人向けに、出来ることの一例が書いてあるだけのよわよわな記事です

OpenCVって?

画像処理に特化したライブラリです
導入してなくても画像処理をすることはできますが、使うととても楽になります!

使える言語

OpenCVを導入できる言語は以下の4つです(公式はサポートしてないけど他にも使える言語があるらしい)

以上からお好きなものをお選びください・・・と言いたいところなのですが・・・
C/C++の場合は導入するのがかなり大変なので、「ちょっと遊んでみるだけ」な人はPythonを選ぶことをおすすめします

ちなみに、私はC++を選んだのですが、私はVisualStudioの環境構築をしたのは初めてだったので、OpenCVを導入するまでに2週間ほどかかりました(カカリスギィ!!!)
JavaとMATLABは軽く触れただけなので私からはなんとも言えません・・・

導入方法(C/C++)

こちらからダウンロードできます
私はこちらのサイトを参考にさせていただきました!ありがとうございます!

Visual Studio 2017にOpenCV3.2.0とopencv_contribを導入する方法

どんなことができるの?

テンプレートマッチング

私はテンプレートマッチングで少し遊んでみたので紹介してみます
テーマは「艦これの自動化」です
※マクロは規約違反ですので気をつけてください

テンプレートマッチングって?

テンプレートマッチングとは、オリジナル画像とテンプレート画像を用意して、オリジナル画像の中にどのくらいテンプレート画像と似たものがあるかを調べる機能です
言葉で言っても分かりづらいので、一例をお見せします

オリジナル画像

テンプレート画像

マッチング結果

このように、テンプレート画像を用意すればオリジナル画像の中で似ている部分を見つけることができます
また、その部分がテンプレートとどのくらい似ているかも取得できます
似ているか似ていないか曖昧なものでも、しきい値を自由に設定できるので、精度は下がりますがマッチングできます

どうやってマッチングしてるの?

物体検出 — opencv 2.2 documentation - OpenCV.jp
このドキュメントに詳しい測定方法が書いてあります
今回は一番下の"CV_TM_CCOEFF_NORMED"という手法で測定しました

艦これでもやってみた

艦これで小破・中破・大破それぞれの認識をやってみました
めんどいので画像を一つにつなげてます

オリジナル画像

テンプレート画像

マッチング結果

という感じで、しっかり小破、中破、大破の判定ができたようです(一部ガバガバですが・・・)
これによって、通信内容を見ることなく艦娘の損害を確認できるようになりました
いろいろと悪いことが楽しいことができそうです

以上で私の記事は終わりです
明日はmimikkuさん、kanjiさんの記事です
お楽しみに!

この記事を書いた人
JichouP

npx jichoup 本格的にJS信者になりました 東京工業大学17電電 / traP 庶務補佐

この記事をシェア

このエントリーをはてなブックマークに追加

関連する記事

2018年7月7日
ますにかえる ハッカソン参加記
yusuke
2017年12月27日
Splatoon2~ボムの使い方~
shigurure
2017年12月26日
RustでMCMC(Metropolis-Hasting)
David
2017年12月26日
NinjaFlickerが完成しました
gotoh
2017年12月25日
Project Obelisk [traP Advent Calendar 2017]
nari
2017年12月25日
tobiom

活動の紹介

カテゴリ

タグ