UnityでArUcoマーカーを検出しようとしています。
webカメラは起動できたのですが、NullReferenceException: Object reference not set to an instance of an object
webcam.Update () (at Assets/Script/webcam.cs:40)
というエラーが出てしまいマーカーが認識できません。ご教授していただけると助かります。
試したこと
RawImageを作ってスクリプトをアタッチしました。40行目のカメラフレーム更新の bool v = cam.Read(cam_frame);が指摘されていたのでカメラフレームについて調べました。
using UnityEngine; using OpenCvSharp; using System.Collections; using System.Collections.Generic; using OpenCvSharp.Aruco; using UnityEngine.UI; public class webcam : MonoBehaviour { private VideoCapture cam; public Mat cam_frame; private const PredefinedDictionaryName dictName = PredefinedDictionaryName.Dict4X4_50; private Dictionary ar_dict; private DetectorParameters detect_param; private static readonly int INPUT_SIZE = 300; private static int FPS = 30; private RawImage rawImage; WebCamTexture webCamTexture; private void Start() { this.rawImage = GetComponent<RawImage>(); this.webCamTexture = new WebCamTexture(INPUT_SIZE, INPUT_SIZE, FPS); this.rawImage.texture = this.webCamTexture; this.webCamTexture.Play(); ar_dict = CvAruco.GetPredefinedDictionary(dictName); detect_param = DetectorParameters.Create(); } void Update() { Point2f[][] maker_corners; int[] maker_ids; bool v = cam.Read(cam_frame); CvAruco.DetectMarkers(cam_frame, ar_dict, out maker_corners, out maker_ids, detect_param, out _); if (maker_ids.Length > 0) { CvAruco.DrawDetectedMarkers(cam_frame, maker_corners, maker_ids, new Scalar(0, 255, 0)); } } }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。