UnityでOpenCVを使って何かしたいなぁというふわふわした気持ちでOpenCVSharpを導入してみました。
Android向けに何か作る予定だったのですが、OpenCVSharpをAndroidで使用することはできないっぽいです。
まぁWindows向けには使用できたので、導入の備忘録的な感じで書いておきます。
開発環境
- Windows10 Pro(64bit)
- Unity 2019.4.11f1
手順
UnityでNuGetを使用できるようにする
まず、以下のunitypackageをUnityにインポートします。
NuGet経由でOpenCVSharpを取得する
NuGetForUnityを起動
Unityのヘッダーメニューから「NuGet」→「Manage Nuget Packages」を選択します。
OpenCVSharpのライブラリを取得
テキストフィールドに「OpenCVSharp3」を入力し、「OpenCVSharp3-AnyCPU」をインストールします。
※右上に表示されているVersionを覚えておいてください
DllNotFoundException対応
このままだと実装して起動しても「OpenCvSharpExtern.dll」が足りないと怒られるので対応します。
インポートしたOpenCVSharp3-AnyCPUのバージョンに最も近いものを以下のページから探してください。
今回の場合は「4.0.0.20181129」なので「4.0.0」から「OpenCvSharp-4.0.0-x64-20181130.zip」をダウンロードします。
※使用しているOSのbit数にあった方を選んでください
ダウンロードしたZipから「OpenCvSharpExtern.dll」を取り出し、「Assets/Packages/OpenCvSharp3-AnyCPU.4.0.0.20181129/lib/netstandard2.0/」に格納します。
以上でUnityへのOpenCVSharpの導入は完了です。
OpneCVSharpのドキュメントは以下を参照してください。
注意点
OpenCVSharpはあくまでもOpenCVのAPIをC#にラップしただけなので、Webカメラを使って何かをしたいという時はUnityの「WebCamTexture」ではなくOpenCVSharpの「VideoCapture」を使用する必要があります。
OpenCVSharpにはOpenCVのMATとUnityのTextureの相互変換機能がないため、OpenCVのMatオブジェクトをPNGに変換してUnityのTextureオブジェクトに読み込ませる流れになります。
最後に
Unity+AndroidでOpenCVを使用する場合はおとなしく金で解決させましょう。
コメント
[…] Unity で OpenCVSharp を使う | Fantastic Works […]