【发布时间】:2021-12-23 19:49:11
【问题描述】:
我有一个 16 位深度的灰度图像。我想使用 libpng 库获取图像的像素值。但是,我的程序的输出是该图像的所有像素值,介于 0 到 255 之间。我用 ImageJ 软件检查了该图像以及它们在 0 到 65535 之间的事实。我不知道我哪里出错了。这是我的代码。
#include <stdio.h>
#include <png.h>
int main(void) {
FILE *fp = fopen("sample.png", "r");
png_structp png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
png_infop png_info = png_create_info_struct(png_ptr);
png_init_io(png_ptr, fp);
png_bytepp rows;
png_read_png(png_ptr, png_info, PNG_TRANSFORM_IDENTITY, NULL);
int WIDTH = png_get_image_width(png_ptr, png_info);
int HEIGHT = png_get_image_height(png_ptr, png_info);
rows = png_get_rows(png_ptr, png_info);
for (int h = 0; h < HEIGHT; h++) {
for (int w = 0; w < WIDTH; w++) {
printf("%d ", rows[h][w]);
}
printf("\n");
}
return 0;
}
请帮助我。非常感谢。
【问题讨论】:
-
请不要标记您不使用的编程语言。如果您有 C 程序,则不要添加 C++ 标签。 C 和 C++ 是两种截然不同的语言。
-
@Someprogrammerdude 我是 StackOverFlow 的新手。我很抱歉。
-
请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
标签: c image image-processing libpng