【发布时间】:2018-05-15 14:15:58
【问题描述】:
我正在使用一个名为 qdbmc 的库来读取 bmp 灰度图像 (lena_gray.bmp)
这是link图书馆
这是我的代码:
int read_image(char *filename)
{
struct _BMP* bmp;
UINT width, height;
UCHAR red,green,blue;
bmp = BMP_ReadFile(filename);
BMP_CHECK_ERROR( stderr, -1 );
/* Get image's dimensions */
width = BMP_GetWidth( bmp );
height = BMP_GetHeight( bmp );
printf("%lu %lu \n",width,height);
/* Iterate through all the image's pixels */
for (int x = 0 ; x < width ; ++x )
{
for (int y = 0 ; y < height ; ++y )
{
/* Get pixel's RGB values */
BMP_GetPixelRGB( bmp, x, y, &red, &green, &blue );
printf("%d \t %d \t %d \n",red,green,blue);
}
}
return 0;
}
宽度和高度显示正确 (512 x 512),但像素值正确,因为它显示全为零。
当我在 python 中使用 imread() 函数时,我得到了这个:
60 160 160 159 161 156 161 159 162 159 160 158 154 162 158 154 156 155
160 160 153 156 154 156 154 156 154 152 155 153 153 155 153 157 155 158
.....
有人可以帮忙吗?
编辑
这是link to the image(选择 Lena,8 位灰色 (512 x 512),bmp )
【问题讨论】:
-
与您的问题无关,但
"%lu"格式说明符适用于unsigned long int。变量width和height是unsigned int,您不应在格式说明符中使用l前缀。 -
是编译器建议我更改它...但你是对的
-
@Some 程序员老兄实际上该库的文档说
UINT是UINT - Unsigned long integer (DWORD) -
可能库不支持bmp图像的格式,它支持Uncompressed 32 BPP、Uncompressed 24 BPP和Uncompressed 8 BPP。您必须确保您的图像是其中一种形式。
-
我们跑题了,问题的主要原因一定是库不理解bmp图像变体。