0

我正在寻找有关如何将图像从 Windows 运行时组件传递到本机算法的演示/教程。

1)我应该将路径传递到系统上的文件并让我的天真的库加载图像吗?

2)我应该传递字节数组吗?

我可以处理它以同时使用文件系统和来自摄像机的实时流吗?

评论:我可能遗漏了一些信息,抱歉,用于处理图像的算法是 c++ 中的跨平台实现。我想将此暴露给 WP8 和 Win8 应用程序。因此,我需要将图像从 UI 获取到运行时组件,然后再到 c++ 库。我同意我不想多次解码它。我只需要一些建议/示例这在代码中的外观。我同意以某种方式将指针传递给运行时组件(算法和应用程序之间的 API)。

因此,如果有任何方法可以处理图像的内存布局如何在应用程序中呈现,这样它也适合算法设计。OpenCV 等将具有用于 1x3 像素 rgb 图像的 BGRBGRBGR 布局。(我希望这能让我的问题更清楚)

4

1 回答 1

0

C++/CX 是本机代码,不需要将在 C++/CX 程序集之间传递的数据复制到纯 C++ 程序集。最好避免对压缩图像进行两次解码,因为这需要一些时间,所以这就是为什么我建议将指针传递给位图数据而不是复制字节的主要原因,除非确实有必要并且图像不是太大。理想情况下,您将使用可用于显示图像(如果要显示图像)和处理字节的位图格式,例如使用 WriteableBitmap 来显示图像并访问像素来处理它或使用 DirectX两个都。在决定复制位图之前,请注意您的位图使用了多少内存——一张解码的 8MP 照片可能使用大约 32MB 的内存。

编辑*(更多细节)

我相信 Silverlight 通常使用 PRGBA 像素格式,包括您通常用于图像处理的 WriteableBitmap。由于您既没有提到 Silverlight 也没有提到 DirectX,所以我假设您将 Silverlight API 用于您的应用程序。在这种情况下,您的简单选择是仅使用 Silverlight 显示图像并使用库中的 WIC 使用正确的像素格式再次将其解码为位图缓冲区,以便您可以将其传递给图像处理算法库,然后再次使用 WIC将其编码回(最有可能为 png 或 jpg)。更好的解决方案可能是使用DirectX 互操作以避免每次要处理图像并将其显示在屏幕上时都需要经过解码/编码/解码(...)序列。我认为您可以使用 WIC 将图像解码到缓冲区,然后使用 DirectX 显示它,因为我认为 DirectX 应该能够显示图像,而不管使用的像素格式如何。

于 2013-01-26T18:57:47.267 回答