C bmp 24位文件格式上的蓝色通道

C bmp 24位文件格式上的蓝色通道,c,bmp,24-bit,C,Bmp,24 Bit,我想在24位bmp图像上找到蓝色区域。我怎样才能找到蓝色频道?访问蓝色频道的方式是什么 24位像素(24bpp)格式支持16777216种不同颜色 并每3个字节存储1个像素值。每个像素值定义 像素的红色、绿色和蓝色样本(RGBAX中为8.8.8.0.0 符号)。具体顺序为(蓝色、绿色和红色,每8位 每个样本) …来自 24位像素(24bpp)格式支持16777216种不同颜色 并每3个字节存储1个像素值。每个像素值定义 像素的红色、绿色和蓝色样本(RGBAX中为8.8.8.0.0 符号)。具体顺

我想在24位bmp图像上找到蓝色区域。我怎样才能找到蓝色频道?访问蓝色频道的方式是什么

24位像素(24bpp)格式支持16777216种不同颜色 并每3个字节存储1个像素值。每个像素值定义 像素的红色、绿色和蓝色样本(RGBAX中为8.8.8.0.0 符号)。具体顺序为(蓝色、绿色和红色,每8位 每个样本)

…来自

24位像素(24bpp)格式支持16777216种不同颜色 并每3个字节存储1个像素值。每个像素值定义 像素的红色、绿色和蓝色样本(RGBAX中为8.8.8.0.0 符号)。具体顺序为(蓝色、绿色和红色,每8位 每个样本)

…from.

一个24位位图(.bmp)图像的标头为54字节。然后是像素数据。每像素使用3个字节:蓝色、绿色、红色,按顺序排列

要看到这一点,请在paint中创建1x1像素图像,并将一个像素设为蓝色。如果在hexeditor中查看.bmp文件,您将看到第55个字节的值为FF(蓝色),而后面的2为00(无绿色,无红色)。当然,如果您编写一个读取所有字节的C程序,您也可以看到这一点。如果打印从第55个字节到最后的值,您将看到相同的结果

像素数据需要对齐,这称为步幅。步幅计算如下:

stride = (width * bpp) / 8;
在3x3 bmp中,步幅为(3*24)/8=9。该值需要向上舍入到可被4整除的数字(在本例中为12),因此每行需要额外3个字节才能正确对齐位。因此,如果所有字节均为蓝色,则在54字节之后,您将有:

FF 00 00 FF   00 00 FF 00   00 00 00 00
FF 00 00 FF   00 00 FF 00   00 00 00 00
FF 00 00 FF   00 00 FF 00   00 00 00 00
对于4x4 bmp,步幅=(4*24)/8=12。12可以被4整除,因此不需要额外的字节。对于5x5 bmp,步幅=(5*24)/8=15,因此每行需要额外1个字节

要了解有关bmp文件格式的更多信息,请签出。希望这有帮助

24位位图(.bmp)图像的标头为54字节。然后是像素数据。每像素使用3个字节:蓝色、绿色、红色,按顺序排列

要看到这一点,请在paint中创建1x1像素图像,并将一个像素设为蓝色。如果在hexeditor中查看.bmp文件,您将看到第55个字节的值为FF(蓝色),而后面的2为00(无绿色,无红色)。当然,如果您编写一个读取所有字节的C程序,您也可以看到这一点。如果打印从第55个字节到最后的值,您将看到相同的结果

像素数据需要对齐,这称为步幅。步幅计算如下:

stride = (width * bpp) / 8;
在3x3 bmp中,步幅为(3*24)/8=9。该值需要向上舍入到可被4整除的数字(在本例中为12),因此每行需要额外3个字节才能正确对齐位。因此,如果所有字节均为蓝色,则在54字节之后,您将有:

FF 00 00 FF   00 00 FF 00   00 00 00 00
FF 00 00 FF   00 00 FF 00   00 00 00 00
FF 00 00 FF   00 00 FF 00   00 00 00 00
对于4x4 bmp,步幅=(4*24)/8=12。12可以被4整除,因此不需要额外的字节。对于5x5 bmp,步幅=(5*24)/8=15,因此每行需要额外1个字节


要了解有关bmp文件格式的更多信息,请签出。希望这有帮助

你试过什么?如何访问位图?手动?通过图书馆?请发一些代码。你试过什么?如何访问位图?手动?通过图书馆?请发一些代码。