我正在尝试生成一个系统,该系统在OpenCV中获取图像,将其写入XML,从XML读取,并将其显示在WPF应用程序的Image控件中。
我遇到的问题是我不清楚.NET类(例如BitmapImage)如何处理来自字节数组的图像。我已经尝试了很多方法并且遇到了各种错误 - 除非需要,否则无法发布。
我想知道是否有人可以指出我正确的方向?我想知道的是,如何将数据呈现给.NET对象以便在Image控件中显示它?
在此先感谢您的帮助 - 非常感谢。
编辑:我希望我需要做的是将XML转换为字节数组,并使用它与格式的定义来实例化BitmapImage对象或等效物,以用作Image控件的源。我不确定的是如何做到这一点。
答案 0 :(得分:2)
使用int cvSaveImage(const char* filename, const CvArr* image)
以save将文件作为图像。图像格式根据文件扩展名
如果您可以直接将其存储为图像文件,则无需将其存储在XML
中。
.NET类需要一个Image.That就是它。
注意:
如果您想将红色,绿色,蓝色值存储为逗号分隔的字符串,那么它将非常效率低下。请将其保存在Base64
中。然后您可以将其转换为字节和将它提供给任何.NET图像类。而且.NET ImageConverter
类可能非常有用。
答案 1 :(得分:0)
您可以使用:
public static BitmapSource Create(
int pixelWidth,
int pixelHeight,
double dpiX,
double dpiY,
PixelFormat pixelFormat,
BitmapPalette palette,
Array pixels,
int stride
)
答案 2 :(得分:0)
我发现问题(大概)是在编写XML数据之前我没有对Base64进行编码。因此解决方案是在写入XML之前对Base64进行编码,在另一侧对Base64进行解码,将数据作为字节数组读取,然后使用它来实例化MemoryStream,然后是BitmapImage对象。
感谢大家的帮助。