169
159

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UnityでOpenCVを利用した顔検出・画像処理アプリ事始め

Last updated at Posted at 2015-07-14

はじめに

UnityでOpenCVを利用したアプリが簡単に作れるようになるAssetプラグイン「OpenCV for Unity」がAssetStoreで販売されています。

OpenCV for Unity (https://assetstore.unity.com/packages/tools/integration/opencv-for-unity-21088)

公式では無いがインストール手順を詳細に紹介しているサイト

初学者に目を通しておいてほしい使い方講座記事


Windows、Mac、Android、IOS、Linux、Windows10 UWP、WebGLという数多くのプラットフォーム対応しています。
自分で一からネイティブプラグインを作成する手間を考えたら$95は十分お得だと思います。

このAssetを使用した「MarkerBased AR」や「Face Tracker」「RealTime FaceRecognition」のサンプルプロジェクトもAssetStoreで無料配布されています。(動作確認には「OpenCV for Unity」が必要。これらのサンプルは「Mastering OpenCV With Practical Computer Vision Projects」という本のに載っているいるサンプルコードを移植したもののようです)
たまたま参考に読んでいた「OpenCV for Secret Agents」という電子書籍でも一章にわたってサンプルアプリの作成手順が掲載されていました。

Unity5ならproライセンスを持っていなくてもエディタ上でも実行できるのでOpenCVを使った顔検出や画像加工アプリなどのアイデアを手軽に試すことが出来るので楽しいです。
(バージョン2.0.9からWebGLプラットフォームに対応したことにより、ブラウザ上で実行できるWebアプリを作成することが出来るようになりました!実行速度も実用的なレベルでした)

この記事ではAssetのインポートからサンプルの実行までの流れを解説したいと思います。

######※AssetにはReadMe.pdf(英語)が同梱されています。合わせて読んでください。(以下は基本的にはこのマニュアル内容を翻訳したものとなります)

OpenCV for Unityのインポート

UnityのAssetStoreから「OpenCV for Unity」をダウンロードし、プロジェクトにインポートします。(※[「OpenCV for Unity」Assetのインポートサイズを削減する方法]
(http://qiita.com/utibenkei/items/eee141cd2f1656b19cc2)を参考に必要なプラットフォームのプラグインファイルのみインポートすることを推奨)

Assetsのインポートが完了すると、Unity Editorのメニューバーに[Tools/OpenCV for Unity/Set Plugin Import Settings]が追加されます。

OpenCV for Unityのセットアップとサンプル実行

セットアップ

  1. メニューの[Tools/OpenCV for Unity/Set Plugin Import Settings]を選択する
    QiitaOpenCV124_setup.jpg
  2. “OpenCVForUnity/StreamingAssets/”フォルダを“Assets/”フォルダ直下に移動する
    QiitaOpenCV300bata2.jpg

サンプル実行

  1. [PlayerSettings]-[Resolution and Presentation]-[Orientation]-[Default Orientation : Portrait]に設定を変更する。
  2. [Build Settings] を開き、全てのシーン“***.unity” を[Scene In Build]に追加してビルド。サンプルを実行。

######※通常ならば上記のセットアップ作業を行えば、サンプルを動かすことができるはずです。
もし、なにかしらのエラーが出た場合でもReadMe.pdfを見れば、たいていの問題は解決出来るんじゃないかと思います。
よくあるケースとしては、Assetのインポート時や何かの弾みでopencvforunity.bundleやopencv2.frameworkファイルのインポート設定がリセットされてしまうことがあるようです。その場合はメニューの[Tools/OpenCV for Unity/Set Plugin Import Settings]を選択することで壊れた設定を修復することが出来ます。

QiitaOpenCV_sample01.jpg

QiitaOpenCV_sample02.jpg

QiitaOpenCV_sample03.jpg

あなたのOpenCVアプリを作成する

ReadMeによると、このAssetはOpenCV Javaのクローンとして作成されているとあるので、Javaのラッパーで対応しているAPIは基本的に対応している1と考えて良いようです。
これまでのOpenCV Java向けの技術情報等もそのまま活用出来ると思います。

[参考資料]OpenCVでできることの一部(ICVS2013資料から引用)

02_s.gif

画像処理 (Image Processing)

  • 勾配,エッジ,コーナー (Gradients, Edges and Corners)
  • サンプリング,補間,幾何変換 (Sampling, Interpolation and Geometrical Transforms)
  • モルフォロジー演算 (Morphological Operations)
  • フィルタと色変換 (Filters and Color Conversion)
  • ピラミッドとその応用 (Pyramids and the Applications)
  • 画像分割、領域結合、輪郭検出 (Image Segmentation, Connected Components and Contour Retrieval)
  • 画像と形状のモーメント (Image and Contour Moments)
  • 特殊な画像変換 (Special Image Transforms)
  • ヒストグラム (Histograms)
  • マッチング (Matching)

構造解析 (Structural Analysis)

  • 輪郭処理 (Contour Processing)
  • 計算幾何 (Computational Geometry)
  • 平面再分割 (Planar Subdivisions)

モーション解析と物体追跡 (Motion Analysis and Object Tracking)

  • 背景統計量の累積 (Accumulation of Background Statistics)
  • モーションテンプレート (Motion Templates)
  • 物体追跡 (Object Tracking)
  • オプティカルフロー (Optical Flow)
  • 推定器 (Estimators)

パターン認識 (Pattern Recognition)

  • 物体検出 (Object Detection)
  • カメラキャリブレーションと3次元再構成 (Camera Calibration and 3D Reconstruction)
  • カメラキャリブレーション (Camera Calibration)
  • 姿勢推定 (Pose Estimation)
  • エピポーラ幾何 (Epipolar Geometry)

機械学習

  • 単純ベイズ分類器 (Naive Bayes Classifier)
  • k近傍法 (K Nearest Neighbors)
  • サポートベクターマシン (SVM)
  • 決定木 (Decision Trees)
  • ブースティング (Boosting)
  • Random forest (Random forest)
  • EMアルゴリズム (Expectation-Maximization)
  • ニューラルネットワーク (Neural Networks)

ユーザインタフェース

  • シンプルGUI (Simple GUI)
  • 画像の読み込みと保存 (Loading and Saving Images)
  • ビデオ入出力 (Video I/O)

...and more

OpenCV.jp : OpenCV逆引きリファレンス
画像処理速報

関連記事

UnityでOpenCVを利用した顔検出・画像処理アプリ事始め
UnityでOpenCVを利用した顔検出・画像処理アプリ事始め2 サンプルコード詳解
OpenCV for Unityの使い方講座1 エラーハンドリング編
OpenCV for Unityの使い方講座2 Texture2DとMatの相互変換編
「OpenCV for Unity」Assetのインポートサイズを削減する方法
UnityでOpneCVを利用した動画再生をしてみた
UnityでOpneCVを利用したハコスコVR体験

  1. 公式のOpenCV JavaラッパーがOpenCVの全てのAPIをラップしているわけではないようなので、使用したい機能が対応しているかどうかは確認が必要です。

169
159
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
169
159

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?