質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.36%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

1461閲覧

UnityでOpenCVを使いたい。

takaku

総合スコア0

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/11/11 13:10

とあるサイトを参考にOpenCVSharpでArUcoを用いてARマーカ検出を行いたいです。

https://kobazlab.tech/2019/02/07/opencvsharp

エラー内容

DllNotFoundException: OpenCvSharpExtern
OpenCvSharp.Internal.ExceptionHandler.RegisterExceptionCallback () (at <cb74a4a6366740efbebb36987dbd35b9>:0)
OpenCvSharp.Internal.NativeMethods.LoadLibraries (System.Collections.Generic.IEnumerable`1[T] additionalPaths) (at <cb74a4a6366740efbebb36987dbd35b9>:0)
OpenCvSharp.Internal.NativeMethods..cctor () (at <cb74a4a6366740efbebb36987dbd35b9>:0)
Rethrow as TypeInitializationException: The type initializer for 'OpenCvSharp.Internal.NativeMethods' threw an exception.
OpenCvSharp.VideoCapture..ctor (System.Int32 index, OpenCvSharp.VideoCaptureAPIs apiPreference) (at <cb74a4a6366740efbebb36987dbd35b9>:0)
Webcam.Start () (at Assets/Scenes/Script/Webcam.cs:26)

試したこと

NugetをUnityにインポートし、NugetのパッケージからOpenCvSharp4.4.5.3をインストールしました。OpenCvSharpExternのdllがない?と解釈してGithubの方から対応した4.5.3のzipをダウンロードしました。いくつかExtern.dllがありドラッグして入れようとしましたが弾かれてしまいました。
ご教示していただけると助かります。

using System.Collections; using System.Collections.Generic; using UnityEngine; using OpenCvSharp; using OpenCvSharp.Aruco; public class webcam : MonoBehaviour { private int source = 0; //カメラのインデックス private VideoCapture cam; public Mat cam_frame; /* ArUcoの設定 */ //ARマーカ辞書の設定 private const PredefinedDictionaryName dictName = PredefinedDictionaryName.Dict4X4_50; private Dictionary ar_dict; //検出アルゴリズムの設定 private DetectorParameters detect_param; void Start () { cam = new VideoCapture(source); cam.Set(CaptureProperty.ConvertRgb,3); cam_frame = new Mat(); ar_dict = CvAruco.GetPredefinedDictionary(dictName); detect_param = DetectorParameters.Create(); } void Update () { Point2f[][] maker_corners; //ARマーカのカドの座標 int[] maker_ids; //検出されたARマーカのID Point2f[][] reject_points; cam.Read(cam_frame);//フレームの更新 //ARマーカの検出 CvAruco.DetectMarkers(cam_frame, ar_dict, out maker_corners, out maker_ids, detect_param, out reject_points); if(maker_ids.Length > 0){ //検出されたマーカ情報の描画 CvAruco.DrawDetectedMarkers(cam_frame, maker_corners, maker_ids, new Scalar(0, 255, 0)); } } }
using System.Collections; using System.Collections.Generic; using UnityEngine; public class camtexture_cam : MonoBehaviour { public webcam _webcam; private Texture2D cam_Texture; void Start () { cam_Texture = new Texture2D( 640, //カメラのwidth 480, //カメラのheight TextureFormat.YUY2, //フォーマットを指定 false //ミニマップ設定 ); this.GetComponent<Rendere>().material.mainTexture = cam_Texture; } // Update is called once per frame void Update () { cam_Texture.LoadImage(_webcam.cam_frame.ImEncode()); } }

開発環境 
Unity 2020.3020f
OpenCVSharp4.4.5.3
MacBook Pro (13-inch, M1, 2020)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問