回调函数得到的数据不够,该如何处理
回调函数得到的数据不够C/C++ codecapSetCallbackOnFrame(m_hCameraWnd,&FrameCallbackProc)C/C++ codeLR
回调函数得到的数据不够
C/C++ codecapSetCallbackOnFrame(m_hCameraWnd,&FrameCallbackProc);
C/C++ codeLRESULT CALLBACK FrameCallbackProc(HWND ghWnd,LPVIDEOHDR lpVData){ unsigned char *data; char s[20]; data=lpVData->lpData; //获得视频数据首地址,并将数据存入data数组中以便处理
我把位图文件头跟data写进一个新位图里,发现数据才618542个字节,不是预期的921654个字节。
打不开图,我在后面补上后0后,图片是这样的。
可能因为存储顺序的问题,图片倒了。
但是
怎么分成3份了呢? 而且高度也不是2/3整啊
这个图的原图应该是这样的:
而且图片上面还灰不溜糗的。我弄了张黑色的图试了试,结果
:
上面那结棍黑色的是我给图片补上去的,要不图片打不开...
哪位大神来给开开窍啊。
我不想每次都保存图片,然后再打开图片,再读入数据.这样太
太
太
太
太心疼计算机了。
[解决办法]存储摄像机的我在公司也做过。 也是用回调函数,把摄像机的图像数据指针传递过来。然后显示出来或者保存。
我那个摄像机是每秒60帧,无压缩,并且在控件上显示出来。完全没问题
唯一可能的就是你的回调函数那里有问题,或者是摄像机类的底层函数上有问题,或者是BMP文件头信息弄错了?
建议跟踪下。
[解决办法]lpVData->lpData里面的数据是不是不正确啊,
lpData的数据是不是头+数据
另外感觉位图是24位深度,但当成8位显示了,你可以看看位图头是否设置正确了。
[解决办法]图像位数有问题?
24位->8位?