回调函数得到的数据不够

觅食的猫猫 2011-11-20 09:47:16
capSetCallbackOnFrame(m_hCameraWnd,&FrameCallbackProc);


LRESULT CALLBACK FrameCallbackProc(HWND ghWnd,LPVIDEOHDR lpVData)
{
unsigned char *data;
char s[20];
data=lpVData->lpData; //获得视频数据首地址,并将数据存入data数组中以便处理


我把位图文件头跟data写进一个新位图里,发现数据才618542个字节,不是预期的921654个字节。
打不开图,我在后面补上后0后,图片是这样的。



可能因为存储顺序的问题,图片倒了。
但是
怎么分成3份了呢? 而且高度也不是2/3整啊

这个图的原图应该是这样的:





而且图片上面还灰不溜糗的。我弄了张黑色的图试了试,结果



上面那结棍黑色的是我给图片补上去的,要不图片打不开...

哪位大神来给开开窍啊。
我不想每次都保存图片,然后再打开图片,再读入数据.这样太



太心疼计算机了。
...全文
93 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
觅食的猫猫 2011-11-26
  • 打赏
  • 举报
回复
那么你们就是说我的函数用的对了?
昨夜无风 2011-11-24
  • 打赏
  • 举报
回复
图像位数有问题?

24位->8位?
觅食的猫猫 2011-11-24
  • 打赏
  • 举报
回复
等的额心都
ilovedrv 2011-11-21
  • 打赏
  • 举报
回复
lpVData->lpData里面的数据是不是不正确啊,


lpData的数据是不是头+数据
另外感觉位图是24位深度,但当成8位显示了,你可以看看位图头是否设置正确了。
觅食的猫猫 2011-11-21
  • 打赏
  • 举报
回复
哎呀!我图文并貌都没能吸引人来回答
swlilike 2011-11-20
  • 打赏
  • 举报
回复
存储摄像机的我在公司也做过。 也是用回调函数,把摄像机的图像数据指针传递过来。然后显示出来或者保存。
我那个摄像机是每秒60帧,无压缩,并且在控件上显示出来。完全没问题

唯一可能的就是你的回调函数那里有问题,或者是摄像机类的底层函数上有问题,或者是BMP文件头信息弄错了?
建议跟踪下。

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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