'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% '过程功能:将摄像头采集来得视频图像截取一桢保存为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
你看看这里
你提供的网址我看了,没找到我想要的代码,里面有三个关于摄像头编程的程序,但是都没满足我的要求。
我的程序目前可以显示摄像头捕捉到的图像,只不过我希望在另一个picture中根据回调函数得到的数据按照图片格式再一次显示出来,不知道大家明白我的意思么?
你的数据是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
然后可以利用API向指定PICTUREN绘图DEVICE绘图,把你收到的每帧数据(存在于内存中)对应的内存数据区作为一个设备绘图的数据区,整体绘到PICTURN上。就可以显示了。
具体的API和步骤,想不起来了,你查查VB的API绘图例程,拼合一下就成了。
关键是第一步,先搞清楚每帧数据的格式是什么,看看是可以直接使用还是需要转换格式。