我有一个2D数组,其中包含我从二进制文件传输的图像。我想显示这个图像,我想知道什么是最好的工具(c++库)来做到这一点。
简单地说,哪个c++库可以接受2D数组并显示图像?
编辑*我想最好说得更具体一些。
我试图采取8位数值的2D数组,并将它们索引为某种结构来显示我的图像。
Matlab有一个函数可以做到这一点,称为imshow(X, Map),其中Map是一个n × 3的RGB值数组。X是二维数组。c++库是否提供了类似的函数
谢谢你的帮助
是否需要在c++中完成所有这些,或者扩展您的工具链是可以的?听起来你可以把c++和gnuplot结合起来,效果很好,而且不费什么力气。
在这种情况下,你要做的是将你的2D数字数组(它们的字符串表示,而不是它们的位表示)打印到stdout
,每行一个像素,像素由空格(或制表符)分隔。运行program并将输出重定向到一个文件:
$ ./yourprogram > img.dat
然后,创建一个gnuplot脚本,根据需要绘制图像。Gnuplot有丰富的文档,可以帮助您入门—如果您下载当前版本(4.6)的pdf,并在标题"图像"下查找。(第53页),这似乎正是你想要的。
与OpenGL相比,我对这种方法的主要论点是真的很容易。编写stdout
是任何c++程序员学习的第一件事,而gnuplot旨在使绘制数据变得容易。不可否认,gnuplot确实有一个陡峭的学习曲线,但到目前为止还没有使用OpenGL产生相同质量的东西那么陡峭。
如果你正在使用WinAPI
,你可以自由地绘制到程序窗口,在我看来,这是最简单的方法。看这个或这个
否则我建议你学习使用OpenGL,我认为这是今天的主流,有更多的功能,等等。