반응형
1. OpenCVSharp CvCapture 사용
화면이 뒤집혀서 나오는데 원인은 모르겠음
public Material mat; private Texture2D dstTexture; private OpenCVUnity Convert = new OpenCVUnity(); IplImage dst; IplImage capture; private CvCapture cvCapture; CvSize size = new CvSize(640, 480); private void Start() { cvCapture = CvCapture.FromCamera(0); cvCapture.SetCaptureProperty(CaptureProperty.FrameWidth, 640); cvCapture.SetCaptureProperty(CaptureProperty.FrameHeight, 480); capture = new IplImage(size.Width, size.Height, BitDepth.U8, 3); dst = new IplImage(size.Width, size.Height, BitDepth.U8, 3); dstTexture = new Texture2D(size.Width, size.Height, TextureFormat.RGB24, false); } private void Update() { capture = cvCapture.QueryFrame(); Cv.CvtColor(capture, dst, ColorConversion.BgrToRgb); dstTexture.LoadRawTextureData(dst.ImageData, size.Width * size.Height * 3); dstTexture.Apply(); } private void OnDestroy() { dst.Dispose(); capture.Dispose(); }
2. Unity WebcamTexture 사용
이전프레임, 현재프레임 필요할때
public Material mat; WebCamTexture camTexture; private Texture2D dstTexture; private OpenCVUnity Convert = new OpenCVUnity(); IplImage prev; IplImage curr; IplImage dst; private CvCapture cvCapture; private void Start() { WebCamDevice device = WebCamTexture.devices[0]; camTexture = new WebCamTexture(device.name); camTexture.Play(); if (camTexture.didUpdateThisFrame) { curr = WebcamTex2Ipl(camTexture); } dstTexture = new Texture2D(camTexture.width, camTexture.height, TextureFormat.RGBA32, false); } private void Update() { if (curr != null) prev = curr; if (camTexture.didUpdateThisFrame) { curr = WebcamTex2Ipl(camTexture); dst = Convert.OpticalFlowPyrLK(prev, curr); dstTexture.LoadRawTextureData(dst.ImageData, camTexture.width * camTexture.height * 4); dstTexture.Apply(); mat.mainTexture = dstTexture; } } IplImage WebcamTex2Ipl(WebCamTexture wct) { Color32[] camTex32 = wct.GetPixels32(); CvSize size = new CvSize(wct.width, wct.height); return IplImage.FromPixelData(size, BitDepth.U8, 4, camTex32); } private void OnDestroy() { curr.Dispose(); dst.Dispose(); prev.Dispose(); }
반응형
'programming | development > unity' 카테고리의 다른 글
Visual Effect Graph Attributes (0) | 2022.02.25 |
---|---|
Strip Particle System (0) | 2022.02.23 |
Unity + OpenCVSharp2 -IplImage를 Texture2D로 변환 (0) | 2022.01.29 |
Unity에서 Firebase쓰기 (0) | 2022.01.06 |
Unity + Realsense (0) | 2021.11.17 |
댓글