读书人

擒获摄像头数据并显示

发布时间: 2013-01-05 15:20:40 作者: rapoo

捕获摄像头数据并显示
各位大侠,我现在使用vfw方法做个摄像头采集的程序,目前遇到点问题,望大家帮帮忙。目前我使用回调函数capSetCallbackOnFrame可以得到每一帧的数据,但是我不知道怎么将数据转换为位图显示在一个picture中,在网上找了很多资料,有人说用DrawDibDraw方法,但是不晓得为什么我的就是一直显示不出来,谢谢各位了!
[解决办法]
http://anqn.com/vb/153/
你看看这里
[解决办法]
哦 看贴不认真,脑袋必发晕擒获摄像头数据并显示

得到的数据按照图片格式再一次显示出来
你的数据是YUV的吗?
那样的话先转RGB然后加上头文件,就是BMP了
[解决办法]
这个……
我没有用VB写过转换算法,有VC写的DLL一个。
另有VB调用的demo,
注:需要将1.YUV 文件拷贝到C:盘,看一下源码你就懂的…………
有需要,我就上传一下~~

[解决办法]


'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'过程功能:将摄像头采集来得视频图像截取一桢保存为BMP图片
'参数说明:strFileName:保存路径
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Public Sub subSaveFrameToBMP(ByVal strFileName As String, ByVal hCapWnd As Long)
Dim lngP As Long
Dim bolP As Boolean
On Error GoTo errSub
bolP = VBGetSaveFileName(strFileName, _
filter:="DIB Bitmap Files (*.bmp)
[解决办法]
*.bmp", _
DlgTitle:="Save Single Frame", _
DefaultExt:="bmp", _
Owner:=frmMain.hWnd)
If bolP Then
bolP = capFileSaveDIB(hCapWnd, strFileName)
If Not bolP Then
MsgBox "Problem saving frame", vbInformation, App.Title
End If
End If
Exit Sub
errSub:
End Sub

[解决办法]
引用:
目前我使用回调函数capSetCallbackOnFrame可以得到每一帧的数据

这个就得看这个函数的说明,这个每帧数据的格式是什么。
然后可以利用API向指定PICTUREN绘图DEVICE绘图,把你收到的每帧数据(存在于内存中)对应的内存数据区作为一个设备绘图的数据区,整体绘到PICTURN上。就可以显示了。
具体的API和步骤,想不起来了,你查查VB的API绘图例程,拼合一下就成了。
关键是第一步,先搞清楚每帧数据的格式是什么,看看是可以直接使用还是需要转换格式。

读书人网 >VB

热点推荐