19,464
社区成员
发帖
与我相关
我的任务
分享void FillBitmapInfo( BITMAPINFO* bmi, int width, int height, int bpp, int origin )
{
assert( bmi && width >= 0 && height >= 0 && ( bpp == 8 || bpp == 24 || bpp == 32 ) );
BITMAPINFOHEADER* bmih = &( bmi->bmiHeader );
memset( bmih, 0, sizeof( *bmih ) );
bmih->biSize = sizeof( BITMAPINFOHEADER );
bmih->biWidth = width;
bmih->biHeight = origin ? abs( height ) : -abs( height );
bmih->biPlanes = 1;
bmih->biBitCount = ( unsigned short )bpp;
bmih->biCompression = BI_RGB;
if( bpp == 8 )
{
RGBQUAD* palette = bmi->bmiColors;
int i;
for( i = 0; i < 256; i++ )
{
palette[i].rgbBlue = palette[i].rgbGreen = palette[i].rgbRed = ( BYTE )i;
//从这里可以看到OpenCV使用的全调色板 并没有对调色板进行删减,应该不会存在RGB值被改动的问题吧。
palette[i].rgbReserved = 0;
}
}
}