以下のプログラムをUnity上の適当なオブジェクトにアタッチして、cam_frame(カメラの映像)をテクスチャとしてオブジェクトに反映させたのですが、以下のエラーが出てしまいました。
Object reference not set to an instance of an object webcam.Update () 写真のような操作は間違っているのでしょうか。ご教授していただけると幸いです。
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; 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; int[] maker_ids; Point2f[][] reject_points; cam.Read(cam_frame); 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, 480, TextureFormat.YUY2, false ); this.GetComponent<Rendere>().material.mainTexture = cam_Texture; } void Update () { cam_Texture.LoadImage(_webcam.cam_frame.ImEncode()); } }
あなたの回答
tips
プレビュー