我有一个正方形 (1024x1024) 8 位灰度图像,我试图将其用作“景观”(它是一个激流高度模型),我想要做的只是得到类似
byte = pngimg.at(x, y)
我一直在搜索 libpng 的页面并进行谷歌搜索,但没有任何结果。在 Java 中,它就像缓冲图像一样简单。 png 的 C++ 等价物在哪里?
最佳答案
C++不支持STL中的图像类型,所以你必须依赖一些外部库来读取像素。我曾经使用 OpenCV 库来完成它,它的功能是 imread .最近我用 C++11 创建了一个非常简单的库,用于加载 PNG 图像,它只依赖于 libPNG(和 STL)。从 PNG 加载像素数据的代码位于 github repo。 .它从 vector 中获取二进制数据并创建包含像素 vector 的缓冲区。
请注意 - 如果您正在使用 libPNG,您必须记住使用 png_destroy_read_struct 释放 libPNG 资源。 .当我忘记它时,我遇到了一些内存泄漏问题。
关于c++ - 使用 libpng 提取像素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29723861/