从XML文件导入图像

时间:2012-07-22 03:08:41

标签: c# .net opencv

我正在尝试生成一个系统,该系统在OpenCV中获取图像,将其写入XML,从XML读取,并将其显示在WPF应用程序的Image控件中。

我遇到的问题是我不清楚.NET类(例如BitmapImage)如何处理来自字节数组的图像。我已经尝试了很多方法并且遇到了各种错误 - 除非需要,否则无法发布。

我想知道是否有人可以指出我正确的方向?我想知道的是,如何将数据呈现给.NET对象以便在Image控件中显示它?

在此先感谢您的帮助 - 非常感谢。

编辑:我希望我需要做的是将XML转换为字节数组,并使用它与格式的定义来实例化BitmapImage对象或等效物,以用作Image控件的源。我不确定的是如何做到这一点。

3 个答案:

答案 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对象。

感谢大家的帮助。