안녕하세요.
제가 다른 라이브러리를 연동하던 과정에서 잘 모르는게 있어서 질문드립니다.
라이브러리는 C++로 구성되어있으며, C# Wrapper 를 제공하고있습니다.
이 C# wrapper를 통해, 유니티와 연동하려고 하고있는데요..
간단하게 라이브러리를 설명드리면, 카메라를 통해 얼굴을 인식하는 라이브러리인데,
카메라 영상을 통해 얼굴이 인식되면, 인식 완료 콜백이 부르고, 그 콜백은 System.Drawing.Bitmap으로 된 파라미터를 갖고있습니다.
문제는 카메라 영상을 업데이트하기위해, System.Drawing.Bitmap 데이터를 NewFrame에 전달해야하는데,
유니티는 System.Drawing.Bitmap 을 지원하지않아서, 제가 따로 plugin에 추가했단 것입니다..
카메라 스트림을 통해 나오는 영상은 Unity.Texture로 구성되어있고, 이것을 System.Drawing.Bitmap으로 변환을 해야하는데..
변환 방법을 잘 모르겠습니다 .. 구글링을 해도 잘 모르겠네요 ..ㅠㅠ
아래 방법은 변환이 성공한 방법이긴 한데, 너무 느립니다.
실시간 카메라 영상 스트림을 해야해서 .. 혹시 다른 방법 알고 계신 분 있으시면 조언 부탁드립니다.
감사합니다.
Texture2d tex2D = color_frame.material.mainTexture as Texture2D;
System.Drawing.Bitmap accordImage = new System.Drawing.Bitmap(tex2D.width, tex2D.height);
// copy our texture pixels to that system bitmap
for (int x = 0; x < accordImage.Width; x++)
{
for (int y = 0; y < accordImage.Height; y++)
{
var c = (Color32)tex2D.GetPixel(x, y);
var nc = System.Drawing.Color.FromArgb(c.r, c.g, c.b, c.a);
accordImage.SetPixel(x, y, nc);
}
}
faceWrapper.newFrame(0, accordImage);