16色图像、256色图像这些索引图像,图像数据存贮的实际上是
调色板的索引。那么使用OpenCV库打开bmp图像后,如何获取图像的调色板从而获取像素的真正的RGB颜色呢?
调色板的索引。那么使用OpenCV库打开bmp图像后,如何获取图像的调色板从而获取像素的真正的RGB颜色呢?
解决方案 »
- 新手上路,菜鸟问题:怎么把让一个计算好后的值在EDIT框中显出来?
- 在VC中如何调用已经注册的COM对象,比如Wscript.Shell对象 ?
- 在Windows中编译Openh323,希望大家支持,共同学习!!
- 开发这样一个软件,用哪个语言好?
- 调用了一个dll,Release版本程序退出时报错“0x73d47fea指令引用的0x00000004内存,该内存不能为read”
- 我有一个很优秀的国外ocx控件...
- 今天元宵,放分1500,随便问个问题!(4),每个回答的给100(必须让我满意)
- 怎么在线程里更改cstatic的背景色
- VC编程如何控制Modem
- 我写了一个交流的程序,在CSDN上,请来下载,提点意见.
- openssl 生成CSR问题?
- ADO的问题
{
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;
}
}
}