1

我有一个二维数组,其中包含从二进制文件传输的图像。我想显示此图像,并且想知道执行此操作的最佳工具(C++ 库)是什么。

简单来说,什么 C++ 库可以获取二维数组并显示图像?

编辑*我认为最好更具体。

我正在尝试获取 8 位数值的二维数组并将它们索引到某种结构中以显示我的图像。

Matlab 有一个名为 imshow(X, Map) 的函数,其中 Map 是一个 n×3 的 RGB 值数组。X 是二维数组。C++ 库是否提供了类似的功能。

谢谢您的帮助。

4

2 回答 2

0

如果您正在使用WinAPI,您可以随意在程序窗口中绘画,这是我认为最简单的方法。见这个这个

否则我建议你学习使用OpenGL,我认为它在今天被认为是主流并且有更多的功能等等。

于 2013-04-05T22:02:52.207 回答
0

是否需要在 C++ 中完成所有这些工作,还是可以扩展您的工具链?听起来你可以将 C++ 与例如gnuplot结合起来,效果很好,而且工作量很小。

在这种情况下,您要做的是获取二维数字数组并将它们(它们的字符串表示形式,而不是它们的位表示形式)打印到stdout,每行一个像素行,像素由空格(或制表符)分隔。运行程序并将输出重定向到文件:

$ ./yourprogram > img.dat

然后,创建一个 gnuplot 脚本,根据需要绘制图像。Gnuplot 有大量文档可以帮助您入门 - 如果您下载当前版本 (4.6) 的 pdf 并查看“图像”标题下(第 53 页),这似乎正是您想要的。

我对这种方法的主要论据,例如 OpenGL 是,这真的很容易。写入stdout是任何 C++ 程序员学习的第一件事,而 gnuplot 旨在使绘制数据变得容易。诚然,gnuplot 确实有一个陡峭的学习曲线,但远没有使用 OpenGL 产生相同质量的东西那么陡峭。

于 2013-04-06T00:07:27.207 回答