【发布时间】:2021-04-19 10:03:22
【问题描述】:
问题: 我从 android 设备接收 YUV_420_888 图像作为字节缓冲区(简单地连接图像平面缓冲区)。我知道图像的尺寸,我需要将它显示到我的 GUI 上。
我目前所拥有的: 目前我只能使用具有以下功能的灰度 Y 平面:
private BitmapImage GetImageFromBuffer(byte[] imgBuffer)
{
Image<Gray, byte> emguImg = new Image<Gray, byte>(1280, 720);
emguImg.Bytes = imgBuffer;
var img = new BitmapImage();
using (MemoryStream ms = new MemoryStream(emguImg.ToJpegData()))
{
img.BeginInit();
img.CacheOption = BitmapCacheOption.OnLoad;
img.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
img.StreamSource = ms;
img.EndInit();
}
return img;
}
我也测试了类似的代码,使用Image.ToBitmap() 函数并将中间位图复制到内存流中,作为BitmapImage 的源。
无论如何,我想从传入的byte[] 创建一个BitmapSource 的BitmapImage(或我可以用来在GUI 上显示的任何类型)。
据我所知,我必须从字节数组创建一个 Mat 实例,将其转换为 RGB,然后将其保存为可显示的格式。
【问题讨论】: