繁体   English   中英

将 Mat 转换为 MemoryStream OpenCV for Android

[英]Convert Mat to MemoryStream OpenCV for Android

使用 OpenCVSharp,将 Mat 对象转换为 MemoryStream 非常容易。

private Stream GetStream(Mat mat, string ext)
{
    return mat.Clone().ToMemoryStream(ext);
}

如何使用 Xamarin.OpenCV.Droid 执行此操作?

https://github.com/NAXAM/opencv-android-binding/

您使用Imgcodecs.ImencodeMat实例和所需的编码填充MatOfByte实例,然后您可以从中获取byte[]以填充Stream

注意:OpenCVSharp 有一系列辅助函数,它们在调用ToMemoryStream方法时执行这些函数。

示例(从文件中读取 png 并将其保存为 jpg):

using (var matFromPng = Imgcodecs.Imread(cachedFileName, Imgcodecs.ImreadColor))
using (var vect = new MatOfByte())
{
    if (Imgcodecs.Imencode(".jpg", matFromPng, vect))
    {
        var stream = new MemoryStream(vect.ToArray());
        // Do something with your stream...

        cachedFileName = Path.Combine(CacheDir.AbsolutePath, "her.jpg");
        using (var cacheFilestreamToJpeg = new FileStream(cachedFileName, FileMode.Create, FileAccess.Write))
        {
            stream.CopyTo(cacheFilestreamToJpeg);
        }
        stream.Dispose();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM