,MFC下GetPixel()的效率有关问题。
求助,MFC下GetPixel()的效率问题。。。
如题,需要提取每个像素的RGB值,原先的代码如下:
for(int y = 0; y < Height ; y++)
{
for(int x = 0 ; x< Width; x++)
{
image[x][y] = m_pDC->GetPixel(x,y);
....................
....................
}
}
这里面的GetPixel()效率低的惨不忍睹(特别在线程里尤其明显),不知道哪位大侠有优化方法如上提取像素到一个二维数组(之后一直用这个数组处理)。。。。。
------解决方案--------------------
两种方式.
1. 用你的ImageData, 两个字节, RGB565即是R占5Bit,G占6Bit,B占5bit, 然后你自己把这两个字节按位拆开即可.
WORD color = *(WORD*)(&ImageData[xxx]);
BYTE r = (color>>11)&0x1F; //高5bit为r
BYTE g = (color>>5)&0x3F; //中间6bit为g
BYTE b = color&0x1F; //最低5bit为b
RGB565
------解决方案--------------------
如果我有W*H*2个数,若是循环取,这个XXX是?
是 w*h ,注意 没有 *2, *2 已经 在 Byte-》word 中 体现。
如题,需要提取每个像素的RGB值,原先的代码如下:
for(int y = 0; y < Height ; y++)
{
for(int x = 0 ; x< Width; x++)
{
image[x][y] = m_pDC->GetPixel(x,y);
....................
....................
}
}
这里面的GetPixel()效率低的惨不忍睹(特别在线程里尤其明显),不知道哪位大侠有优化方法如上提取像素到一个二维数组(之后一直用这个数组处理)。。。。。
MFC
性能优化
多线程
GetPixel
------解决方案--------------------
两种方式.
1. 用你的ImageData, 两个字节, RGB565即是R占5Bit,G占6Bit,B占5bit, 然后你自己把这两个字节按位拆开即可.
WORD color = *(WORD*)(&ImageData[xxx]);
BYTE r = (color>>11)&0x1F; //高5bit为r
BYTE g = (color>>5)&0x3F; //中间6bit为g
BYTE b = color&0x1F; //最低5bit为b
RGB565
------解决方案--------------------
如果我有W*H*2个数,若是循环取,这个XXX是?
是 w*h ,注意 没有 *2, *2 已经 在 Byte-》word 中 体现。