从 png 字节获取 EMGU 图像

Getting EMGU Image from png bytes

我正在尝试从 png 字节中获取 Image
在下面的示例中,我能够从文件中加载 png,但不能从文件的字节中加载:

//using Emgu.CV;
//using Emgu.CV.Structure;
var path = @"C:\path\to\my.png";    

// Using the constructor with the file path works great!
var imageFromFile = new Image<Rgb, byte>(path); 


var bytes = File.ReadAllBytes(path);
var size = imageFromFile.Size;
var imageFromBytes = new Image<Rgb, byte>(size);

// Assigning the bytes ails with an 'ArgumentOutOfRangeException' exception
imageFromBytes.Bytes = bytes; 

这实际上是有道理的,因为 imageFromBytes.Bytes 需要一个大小为:

的数组
size.Width * size.Height * 3

而字节数组具有压缩后的 png 图像的大小。
所以,我的问题是 - 给定一个 png 字节数组,我怎样才能得到这些字节的图像实例?

Emgu github repo中稍作探索后,下面将从字节数组中获取图像。
不是这样 OOP-ish,但有效...

var imageFromBytes = new Image<Rgb, byte>(imageFromFile.Size);
CvInvoke.Imdecode(bytes, Emgu.CV.CvEnum.ImreadModes.AnyColor, imageFromBytes.Mat);
// Now imageFromBytes holds the uncompressed bytes.