如何获取BMP图像每点RGB颜色值
不用GetPixel函数,效率太低。
看了下BMP图原理,读取了BMP图数据,每一个像素位对应一个颜色索引号
如果这样,用这个索引找颜色,应该效率会高些。但不会实现方法。
还有就是不理解几个地方,其它我要实现的功能是。从摄像头读出一帧图像,图像是一个圆。我要识别出这个圆。
没必要生成BMP图像,应该获取摄像头数据时就可以开始取出RGB颜色。我想是这样。。。
从摄像头用一段代码得到这个值,我在网上找的代码是。
SetDlgItemText(IDC_STATIC1,_T(""));
typedef struct PINGPONG_PR
{
unsigned int rgb_address; //RGB信息的内存地址
unsigned char flag; //读标志位
}
PINGPONG_PR;
PINGPONG_PR image; //定义结构体用于存RGB图像地址;
DeviceIoControl(hCam,CAM_IOCTL_SAMSUNG_CAM_PR,NULL,NULL,(PBYTE)&image,NULL,NULL,NULL);
//////将内存地址中的数据保存
WORD width=GetSystemMetrics(SM_CYSCREEN);
WORD height=GetSystemMetrics(SM_CXSCREEN);//屏幕尺寸
BYTE* DDBdata=new BYTE[width*height*2];//分配用于存数据的空间
BYTE* DIBdata;
memcpy(DDBdata,(void *)image.rgb_address,width*height*2);//将这帧图像数据存入内存
然后用生成BMP的代码就可以生成拍下的图片。
那意思说 DDBdata 里就有我想要的颜色信息。
能不能从这里下手要RGB值。。。。
求高手指教~~~~~~~~~