UnityでOpenCVを どう使うか - OpenCVSharp vs OpenCV dllを使う環境 vs スタティックライブラリ
はじめに
最近何編かにわたって、Unityで OpenCV を使う方法についてまとめてきました。
扱った手法は大きく分けて三つあります
- OpenCVSharp を使う
- OpenCV のDLLを使う前提で、必要な関数をラップした Native Pluginを作る
- OpenCVの staticlib を必要な分だけ取り込んだ Native Plugin を作る
どの手法を使うか、ちょっと考えてみました
それぞれの特徴
1. OpenCVSharp
長所
- C# だけですんで楽
- DLLのビルドとかない
短所
- C++ の OpenCVに慣れているとちょいちょい混乱する。ちまたのリファレンスが基本 C++なだけに。
- C++ のライブラリを全部ぶっ込み、OpenCVSharp の DLLもぶっこみ、とする必要があるのでオーバーヘッド大。特に配布を考えると。
- あくまで有志の方が作った物で、公式の最新について行けるとは限らない
2. OpenCV のDLLを使う前提で、必要な関数をラップした Native Pluginを作る
長所
短所
3. OpenCVの staticlib を必要な分だけ取り込んだ Native Plugin を作る
長所
短所
- ビルドの設定が結構複雑
- デバッグが面倒
どう使うか?
こう考えました。
短所については
- ビルドの複雑さは慣れでカバー
というわけで、 3. staticlib を使ってDLLを作る が良いと考えました。
デバッグが面倒、という件も
- 一応前回の記事でクリアできたと思っている
- そもそもDLLにする主旨は、役割の分担を明確にし極力疎結合にすることです。データの受け渡しなど界面をしっかりと設計し、OpenCVで行う画像処理などは C++ 単体でテストしておいて、使えることを確認した後Unityで使うようにすべきでしょう。つまりデバッグは普通にC++で完結して行う。
という感じの進め方で良いと思っています。
(前回の記事)