28
17

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 3 years have passed since last update.

Unity #2Advent Calendar 2019

Day 10

UnityのOpenCVはどれ使おう?

Last updated at Posted at 2019-12-13

#きっかけ

UnityでOpenCVが使いたかったのですが、アセットストアを探すとそれっぽいものが複数見つかって混乱してしまいました。
その後調べた結果、違いが少しわかったので、自分以外にも混乱してしまった人の参考になればと書いてみます。

#3つのOpenCVアセット
OpenCVでアセットストアを検索すると以下の3つがみつかります。

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

OpenCV plus Unity free
https://assetstore.unity.com/packages/tools/integration/opencv-plus-unity-85928

OpenCV# for Unity $16
https://assetstore.unity.com/packages/tools/integration/opencv-for-unity-100374

###OpenCV for Unity
Enox Softwareが作っている$95のアセットです。
(2019/12/13現在、半額の$47.5でセール中)

これの特徴は、Java用OpenCVのクローンであること。
後に説明するOpenCVSharpとは関係がありません。

namespaceがOpenCVForUnityになっており、APIはJava用OpenCVと同じです。
C++・PythonのOpenCVのAPIとは記述が結構異なる印象です。

OpenCVForUnityのusing記述
using OpenCVForUnity;

2019年12月現在、OpenCV 4.1.0にも対応して継続的にメンテナンスされてます。

###OpenCV plus Unity
Paper Plane Toolsが作っているfreeのアセットです。
以前は$50くらいだったようですが、2019年1月24日より無料化しました。

これの特徴は、OpenCVSharpをUnityで使えるようにしたものであること。
そのためAPIはOpenCVSharpと同じです。

namespaceはOpenCVSharpと同様にOpenCVSharpになっており、APIももちろんOpenCVSharpと同じです。
C++・PythonのOpenCVのAPIと比較的記述が近い印象です。

OpenCVplusUnityのusing記述
using OpenCVSharp;

ただし、アセットをインポートして使おうとすると以下のエラーが出まくります。

error CS0227: Unsafe code may only appear if compiling with /unsafe. Enable "Allow 'unsafe' code" in Player Settings to fix this error.

このエラーを消すには、Player Settings > Other Settings > Configuration にある Allow 'unsafe' Code にチェックをつける必要があります。

対応OpenCVのバージョンは、アセットストアの説明文を見るとOpenCV 3のようです。
無料化した理由も少し書いてあり、サポートはしない、コンピュータビジョンの世界を学びたい人のために無料でアセットを残しておくから楽しんでくれ的なことが書かれてます。

今後の更新はあまり期待できないかもしれません。

###OpenCV# for Unity
NWH Codingが作っている$16のアセットです。
特徴は、native C++のOpenCVプラグインをC#でラップしていること。

このアセットは使える環境が無いので詳しいことは把握してませんが、アセットストアの説明文にIncludes optimized functions conversion between common Unity and OpenCV structures とあるので、オリジナルAPIなのかもしれません。
↓がドキュメントのようなのですが、空っぽで詳細不明でした。
http://nwhcoding.com/index.php/products/opencv-for-unity/
(変なURL...)

#OpenCVSharp
OpenCVは色々な環境に移植されているので、C#専用のOpenCVSharpというものがあります。

OpenCVCharp
https://github.com/shimat/opencvsharp

自分で色々調べていた時、アセットわからんと思って迷ってしまったので、いっそのことアセット使わずこれをそのまま使うのが一番シンプルなのではと思って試しました。

が。
UnityにNuGetプラグインを入れてパッケージをインストールするという Unity であらゆる C#(.NET) パッケージを使う(例:opencv) もあったので試してみましたが、自分の環境ではうまく動かず...
該当記事とはUnityのバージョン、OpenCVのバージョンどちらも違ったので、そのせいかもしれません。

なお、OpenCVCharpの公式ドキュメントには以下の一文が。
OpenCvSharp may not work on Unity platform. Please consider using OpenCV for Unity

#結局、どれ使うのがいいの?

###C++、PythonのOpenCVに近い書き方で書きたい人
>OpenCV plus Unity
>OpenCVSharp(環境構築がうまくいけば...)

###OpenCVSharpに慣れている人
>OpenCV plus Unity

###JavaのOpenCVに慣れている人
>OpenCV for Unity

###今後のサポートまで考慮する人
>OpenCV for Unity
>OpenCVSharp(環境構築がうまくいけば...)

###お金を使わずUnityでOpenCV試してみたい人
>OpenCV plus Unity

#まとめ
環境構築がうまくいくなら、アセット使わずOpenCVSharpをそのまま使うのがベターだと思いました。

OpenCVSharp公式は、UnityではOpenCV for Unityを使うことを推奨してますが、個人的にはAPIに独自感があってちょっと使いにくい印象...(個人の感想です)
でも今後も考えるとアセットではOpenCV for Unity一択な感じもあり...。

難しいですね。

28
17
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
28
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?