使用libpng提取像素值

时间:2015-04-18 22:58:19

标签: c++ image png pixel libpng

我有一个正方形(1024x1024)8位灰度图像,我试图用作“风景”(它是一个暴雨高度模型)而我想要做的就是得到像

byte = pngimg.at(x, y)

我一直在搜索libpng的网页和谷歌搜索,但没有任何东西出现。在Java中,它就像缓冲图像一样简单。 png的C ++等价物在哪里?

1 个答案:

答案 0 :(得分:0)

C ++不支持STL中的图像类型,因此您必须依赖某些外部库来读取像素。我曾经使用OpenCV库来做它,它的功能是imread。最近我在C ++ 11中创建了一个非常简单的库,用于在PNG中加载图像,它只依赖于libPNG(和STL)。从PNG加载像素数据的代码位于github repo。它从矢量获取二进制数据并使用像素矢量创建缓冲区。

一个注意事项 - 如果您使用的是libPNG,则必须记住使用png_destroy_read_struct释放libPNG资源。当我忘记了内存泄漏时,我遇到了一些问题。