簡體   English   中英

將 Mat 轉換為 byte[] - .net 內核

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM