[英]Convert Mat to byte[] - .net core
我正在嘗試將 EmgCV 與 .netCore 一起使用,並且我想將我的圖像發布到服務器。
如何將我的圖像(Mat 或 Image<Bgr, byte>)轉換為 byte[]。 我不能先將其轉換為 Bitmap,因為我使用的是 .netcore 而不是框架。 這就是我將 byte[] 轉換為 Mat 的方式:
byte[] bytes = await response.Content.ReadAsByteArrayAsync();
Mat image2 = new Mat(4000, 6000, DepthType.Cv8U, 3);
CvInvoke.Imdecode(bytes, ImreadModes.AnyColor, image2);
有人可以幫我反其道而行之嗎? 我嘗試使用它,但這不起作用:
Image<Bgr, byte> afterImage = diff.ToImage<Bgr, byte>();
byte[] afterbytes = afterImage.Bytes;
提前致謝!
我認為您收到的字節不是原始 bitmap 字節。 相反,您會收到 jpeg 或 png 編碼的圖像。 這就是為什么你必須使用 Imdecode。
EmguCV 還提供方法Imencode將圖像編碼為各種格式。
下面的示例將 image2 Mat 編碼為 jpeg 字節。 當 EmguCV 支持時,也可以是 png 或其他東西。
var buffer = new VectorOfByte();
CvInvoke.Imencode(".jpg", image2, buffer); //Must use .jpg not jpg
byte[] jpgBytes = buffer.ToArray();
除了 Mat 你還可以傳遞 Image<TColor,TDepth>
我自己找到了解決方案:
Image<Bgr, byte> afterImage = afterImageMat.ToImage<Bgr, byte>();
byte[] afterbytes = afterImage.ToJpegData();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.