gpt4 book ai didi

c# - 将 Mat 转换为适用于 Android 的 ImageSource OpenCV

转载 作者:搜寻专家 更新时间:2023-11-01 09:21:53 24 4
gpt4 key购买 nike

使用 OpenCVSharp,将 Mat 对象转换为 System.Windows.Media.ImageSource 非常容易。

private ImageSource GetImageSource(Mat mat)
{
return mat.ToWriteableBitmap();
}

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

如何将 Mat 转换为 Xamarin.Forms.ImageSource

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

更新

我通过将 Mat 转换为 Bitmap 自己解决了这个问题。

var bitmap = Bitmap.CreateBitmap(mat.Width(), mat.Height(), Bitmap.Config.Rgb565);
Utils.MatToBitmap(mat, bitmap);
var src = ImageSource.FromStream(() => getMemoryStream(bitmap));

private static MemoryStream getMemoryStream(Bitmap bitmap)
{
try
{
var ms = new MemoryStream();
bitmap.Compress(Bitmap.CompressFormat.Jpeg, 100, ms);
ms.Seek(0L, SeekOrigin.Begin);
return ms;
}
catch
{
// log etc
return new MemoryStream();
}
}

我的代码有什么问题吗?

最佳答案

素材流

public Stream MatToStream(Mat mat)
{
using (var vect = new MatOfByte())
{
if (Imgcodecs.Imencode(".png", mat, vect))
return new MemoryStream(vect.ToArray());
return Stream.Null;
}
}

注意:有许多 Mat 类型(内部结构),因此根据您的 Mat 的构造,这可能不是最有效的,并且它没有考虑输出以及以最小的内存消耗最有效地显示图像所需的大小。

用法:

matImage.Source = ImageSource.FromStream(MatToStream);

关于c# - 将 Mat 转换为适用于 Android 的 ImageSource OpenCV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54413234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com