为什么DIB位图显示出来颜色不对劲?

hellolwl 2005-05-31 10:10:31
我用大恒CG300采集卡提供的开发包把图像采集到内存中
指向位图信息头指针为:m_pBmpInfo,指向图像数据区的指针为m_pImageBuffer
用这样的方法显示出来的图像正确的:

StretchDIBits(pDC->GetSafeHdc(),
0,
0,
320,
240,
0,
0,
320,
240,
m_pImageBuffer,
m_pBmpInfo,
DIB_RGB_COLORS,
SRCCOPY
);
但是这样就不对了,色彩不对
HDIB hDIB = (HDIB)GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT,
sizeof(sizeof(BITMAPINFO) + dwImageSize);

LPSTR pDIB = (LPSTR) ::GlobalLock((HGLOBAL)hDIB);
memcpy(pDIB , m_pBmpInfo,sizeof(BITMAPINFO));
memcpy(pDIB + sizeof(BITMAPINFO),m_pImageBuffer,dwImageSize);
::GlobalUnlock((HGLOBAL) hDIB);
CRect rc(0,0,320,240);
PaintDIB(pDC->GetSafeHdc(),&rc,hDIB,&rc,NULL);
GlobalFree(hDIB);
请问这是为什么?
...全文
157 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Summer006 2005-06-02
  • 打赏
  • 举报
回复
+ sizeof(BITMAPINFO) 这里刚好到图像内容的起点啊。
为何-4?是什么意思?
hellolwl 2005-06-02
  • 打赏
  • 举报
回复
已解决,memcpy(pDIB + sizeof(BITMAPINFO) - 4,m_pImageBuffer,dwImageSize);即可
summer54 2005-05-31
  • 打赏
  • 举报
回复
UP
hellolwl 2005-05-31
  • 打赏
  • 举报
回复
大恒的卡我觉得还行吧,只是这一款不支持硬件的MPEG-4压缩。
我这里之所以要得到DIB句柄,目的是为了便于实时的图像处理,但现在显示不正常挺头疼的
zzwu 2005-05-31
  • 打赏
  • 举报
回复
"大恒CG300采集卡"是何时的产品?

主要新能如何?

我也有一块"大恒图像采集卡",8000多人民币买的,现在还没用起来,很想用用它。

我去查查看型号。

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧