HoloLensでOpenCVを使う環境を構築

今回はHoloLensでOpenCVを使う環境を構築する．

#環境
- HoloLens
- Unity v2017.3.0f3
- [MixedRealityToolKit v2.1.1](https://github.com/Microsoft/MixedRealityToolkit-Unity/releases)
- [OpenCVforUnity v2.3.0](https://assetstore.unity.com/packages/tools/integration/opencv-for-unity-21088) （有料：$70）
- [HoloLensWithOpenCVForUnity v1.0.0](https://github.com/EnoxSoftware/HoloLensWithOpenCVForUnityExample/releases)
- [HoloLensCameraSteam v0.3.0-beta](https://github.com/VulcanTechnologies/HoloLensCameraStream/releases)

#手順
先にここから[HoloLensWithOpenCVForUnityExample.unitypackage](https://github.com/EnoxSoftware/HoloLensWithOpenCVForUnityExample/releases)ダウンロードしておく．
![1.PNG](https://qiita-image-store.s3.amazonaws.com/0/257442/9b64c492-a120-6dc0-aa03-b158c694b58d.png)

[HoloLensCameraStream](https://github.com/VulcanTechnologies/HoloLensCameraStream/releases)も同様に.unitypackageをダウンロードしてください．


##1.MRTK(Mixed Reality Toolkit)の導入
早速，Unityで新しいプロジェクトを作成しましょう．
名前は適当に変えてください．
![2.PNG](https://qiita-image-store.s3.amazonaws.com/0/257442/f1608775-ae48-c7b5-09e5-ee6ceac03ae7.png)


メイン画面が表示されたら，まずはMixedRealityToolKitをインポートします．
メニューバーから，[Assets]→[Import Package]→[Custom Package]でunitypackageをインポートします．
※Examplesはインポートしないでください．後のインポートファイルと競合が起きます．
（私はMRTKのunitypackageをまとめて管理しているので下の画像のようになります．実際はダウンロードしたバージョンのみのunitypackageしか入っていないと思います．今回は2.1.1を使用）
![3.PNG](https://qiita-image-store.s3.amazonaws.com/0/257442/872efeb0-2410-79eb-f715-e2ccdee6e92b.png)

インポートが終了したら，
メニューバーから，[Mixed Reality Toolkit]→[Configure]→[Apply UWP Capability Setting]で以下のように設定を行います．
![4.PNG](https://qiita-image-store.s3.amazonaws.com/0/257442/03e1ac49-9ffe-e8c0-659f-00b83e605ba7.png)

##2.OpenCVForUnityの導入
メニューバーから，[Window]→[Asset Store]でOpenCVForUnityと検索し,インポートします．購入をしていない場合は購入後インポートしてください．
いらないファイルもありますが，今回は全部ぶち込みましょう．
![5.PNG](https://qiita-image-store.s3.amazonaws.com/0/257442/6e3b96bb-cd23-f567-92bd-9d9af06e1fe7.png)

インポートが終了したら，メニューバーに[Tools]が追加せれていますので，[Tools]→[OpenCV for Unity]→[Set Plugin Import Settings]を選択します．(何も表示は出ません，終了するまでしばらく待ちましょう)

完了後，Unityのコンソールに「SetPluginImportSettings Success : Assets/OpenCVForUnity/...」と表示されます．

その後，"Assets/OpenCVForUnity/StreamingAssets"を"Assets/StreamingAssets"に移動してください．![6.PNG](https://qiita-image-store.s3.amazonaws.com/0/257442/f78fff75-c7d2-2256-f7a8-5b0545360c54.png)

##3.HololensCameraSteamの導入
メニューバーから，[Assets]→[Import Package]→[Custom Package]で先ほどダウンロードしたHoloLensCameraStream.unitypackageを選択し，全てインポートします．（まれにUnityがバックアップを取っているかと聞いてきますが，"I Made a Backup, Go Ahead!"を選択しましょう．）
![7.PNG](https://qiita-image-store.s3.amazonaws.com/0/257442/28e46cc6-bb06-08eb-253b-5e2fbcec6bb1.png)

##4.HoloLensWithOpenCVForUnityの導入
同様にメニューバーから，[Assets]→[Import Package]→[Custom Package]でHoloLensWithOpenCVForUnityExample.unitypackageを選択し，全てインポートしてください．
![8.PNG](https://qiita-image-store.s3.amazonaws.com/0/257442/46ec9ada-e09e-7cdd-afff-a3c09e4748f2.png)

##5.ビルドのセッティング
最後にビルドのセッティングを行います．
メニューバーから，[File]→[Build Settings]でプラットフォームをUniversal Windows Platformを選択し，画面下にあるSwitch Platformをクリックしてください．![9.png](https://qiita-image-store.s3.amazonaws.com/0/257442/477b57c6-0ef0-60f5-09ec-e922811d5bbc.png)

以上で環境構築は終了です！

#動作確認
では実際に動かしてみましょう．
今回はComicFilterを起動します．Unity上で動作確認を行う際はUSBカメラが必要になります．
UnityのProjectから，"Assets/HoloLensWithOpenCVForUnityExample/HoloLensComicFilterExample"の中にあるHoloLensComicFilterExampleを開きます．
そのままプロジェクトを実行すると，
![10.PNG](https://qiita-image-store.s3.amazonaws.com/0/257442/ac683325-b7e0-6556-67a3-1c555b20729d.png)

ちゃんと動いていますね．

では，これをビルドしてHoloLensにデプロイしていきます．
まず，[File]→[Build Settings]から先ほどのシーンを追加します．
そして，以下の画像の通りに設定しBuildをクリックする．（もしBuildが失敗する場合はScripting Backendを.NETに変更してみてください）
![11.png](https://qiita-image-store.s3.amazonaws.com/0/257442/7e4337db-c7fa-83bf-56ab-f834014eafc6.png)


完成したslnファイルをHoloLensにデプロイすると，動作すると思います．

お疲れさまでした！