반응형
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 |
댓글