Мне нужна помощь для преобразования изображения Emgucv videoCapture в LoadRawTextureData of Unity для отображения изображений / видео в Unity3d 2018.1.
Я могу отображать изображения, но они показывают странные линии и искаженные эффекты изображения или какое-то затвор / рассеяние.
Я прочитал вопрос в этом посте и применил решение, но проблема не решена Конвертировать Mat в Texture2d (Stackoverflow)
Я думаю, что цветное пространство изображения Emgucv не совпало с texture2d.
Код:
void Start () {
vc = new VideoCapture(0);
vc.FlipVertical = true; //The image I am getting from webcam is flipped
myMaterial = GetComponent<Renderer>().material;
frameHeight = (int)vc.GetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameHeight);
frameWidth = (int)vc.GetCaptureProperty(Emgu.CV.CvEnum.CapProp.FrameWidth);
camera = new Texture2D(frameHeight,frameWidth, TextureFormat.RGB24, false,false);
}
Я получаю изображения в этой части кода и преобразовываю цветовое пространство в соответствии с форматом texture2d.
void Update () {
Mat secondimage = new Mat();
Mat myimage = vc.QueryFrame();
CvInvoke.CvtColor(myimage, secondimage, Emgu.CV.CvEnum.ColorConversion.Bgr2Rgb);
Image<Rgb, byte> hello = secondimage.ToImage<Rgb, byte>();
camera.LoadRawTextureData(hello.bytes);
camera.Apply();
myMaterial.mainTexture = camera;
}
Результаты:
Результат довольно странный, взгляните на следующие изображения результатов.
Это моя рука перед камерой. Это оригинальное изображение texture2d.
Изображение1
Это изображение отображается на трехмерной плоскости в unity3d.
Image2
Как объясняет код, я уже конвертировал изображение Bgr2Rgb .
обновление:
Я просто поменяю ширину и высоту в texture2d и вау, это сработало.
camera = new Texture2D(frameWidth, frameHeight, TextureFormat.RGB24,false,false);