我有一个正方形(1024x1024)8位灰度图像,我试图用作“风景”(它是一个暴雨高度模型)而我想要做的就是得到像
byte = pngimg.at(x, y)
我一直在搜索libpng的网页和谷歌搜索,但没有任何东西出现。在Java中,它就像缓冲图像一样简单。 png的C ++等价物在哪里?
答案 0 :(得分:0)
C ++不支持STL中的图像类型,因此您必须依赖某些外部库来读取像素。我曾经使用OpenCV库来做它,它的功能是imread。最近我在C ++ 11中创建了一个非常简单的库,用于在PNG中加载图像,它只依赖于libPNG(和STL)。从PNG加载像素数据的代码位于github repo。它从矢量获取二进制数据并使用像素矢量创建缓冲区。
一个注意事项 - 如果您使用的是libPNG,则必须记住使用png_destroy_read_struct释放libPNG资源。当我忘记了内存泄漏时,我遇到了一些问题。