c - 如何使用 libpng 库获取 16 位深度的灰度图像的像素值?
问题描述
我有一个 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;
}
请帮我。非常感谢。
解决方案
如果您在以下几行中更改类型,它会起作用:
unsigned short **rows;
rows = (unsigned short**)png_get_rows(png_ptr, png_info);
推荐阅读
- android - BottomNavigationView 底部背景未正确设置为 itemBackground
- css - React - Center and resize font awsome icon
- sql - 使用 Hibernate 插入嵌套实体
- javascript - 在 Javascrip 中添加指向图像的链接
- ruby-on-rails - 有没有更好的方法将数据保存到使用 Rails 在模型中计算的逻辑的列中?
- mysql - 如何使用 JOIN 和 WHERE 创建查询或如何让他们成为朋友?
- excel - 如果另一个单元格符合条件,则使用公式更改单元格方向
- python - 按类别更改散点图中的颜色
- terminal - 如何更改cmd中某些单词的颜色?
- makefile - 由于自动生成的文件(automake),我偶尔会看到构建失败。如何在自动生成的文件之间创建依赖关系?