使用 libpng 提取像素值

Extract pixel value with libpng

本文关键字:像素 提取 libpng 使用      更新时间:2023-10-16

我有一个正方形(1024x1024)8位灰度图像,我试图将其用作"风景"(这是一个洪流高度模型),我所做的只是得到类似的东西

byte = pngimg.at(x, y)

我一直在搜索libpng的页面并在谷歌上搜索,但没有任何结果。在Java中,它就像缓冲图像一样简单。PNG 的C++等效值在哪里?

C++不支持

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

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