IT学院-实用电脑教程网

当前位置: IT学院 > 编程技巧 > VB >

VB编程控制摄像头

时间:2010-10-14 00:13来源:本站原创 作者:佚名 点击:
网上有很多摄像头软件,但是没有一个能和自己要求的,要不就是需要注册的,能不能自己通过编程控制摄像头呢? 硬件要求 一个普通的摄像头(一般50元搞定),安装好驱动,然后打
    网上有很多摄像头软件,但是没有一个能和自己要求的,要不就是需要注册的,能不能自己通过编程控制摄像头呢?
硬件要求
一个 普通的摄像头(一般50元搞定),安装好驱动,然后打开VB

新建一个VB项目,添加一个Module

Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" _
   Alias "capCreateCaptureWindowA" ( _
   ByVal lpszWindowName As String, _
   ByVal dwStyle As Long, _
   ByVal x As Long, _
   ByVal y As Long, _
   ByVal nWidth As Long, _
   ByVal nHeight As Long, _
   ByVal hWndParent As Long, _
   ByVal nID As Long) As Long

Private Const WS_CHILD = &H40000000
Private Const WS_VISIBLE = &H10000000
Private Const WM_USER = &H400
Private Const WM_CAP_START = &H400
Private Const WM_CAP_EDIT_COPY = (WM_CAP_START + 30)
Private Const WM_CAP_DRIVER_CONNECT = (WM_CAP_START + 10)
Private Const WM_CAP_SET_PREVIEWRATE = (WM_CAP_START + 52)
Private Const WM_CAP_SET_OVERLAY = (WM_CAP_START + 51)
Private Const WM_CAP_SET_PREVIEW = (WM_CAP_START + 50)
Private Const WM_CAP_DRIVER_DISCONNECT = (WM_CAP_START + 11)

Private Declare Function SendMessage Lib "user32" _
   Alias "SendMessageA" ( _
   ByVal hwnd As Long, _
   ByVal wMsg As Long, _
   ByVal wParam As Long, _
   lParam As Any) As Long

Private Preview_Handle As Long


Public Function CreateCaptureWindow( _
   hWndParent As Long, _
   Optional x As Long = 0, _
   Optional y As Long = 0, _
   Optional nWidth As Long = 320, _
   Optional nHeight As Long = 240, _
   Optional nCameraID As Long = 0) As Long

   Preview_Handle = capCreateCaptureWindow("Video", _
     WS_CHILD + WS_VISIBLE, x, y, _
     nWidth, nHeight, hWndParent, 1)

   SendMessage Preview_Handle, WM_CAP_DRIVER_CONNECT, nCameraID, 0
   SendMessage Preview_Handle, WM_CAP_SET_PREVIEWRATE, 30, 0
   SendMessage Preview_Handle, WM_CAP_SET_OVERLAY, 1, 0
   SendMessage Preview_Handle, WM_CAP_SET_PREVIEW, 1, 0

   CreateCaptureWindow = Preview_Handle
End Function


Public Function CapturePicture(nCaptureHandle As Long) As StdPicture
   Clipboard.Clear
   SendMessage nCaptureHandle, WM_CAP_EDIT_COPY, 0, 0
   Set CapturePicture = Clipboard.GetData
End Function


Public Sub Disconnect(nCaptureHandle As Long, _
   Optional nCameraID = 0)

   SendMessage nCaptureHandle, WM_CAP_DRIVER_DISCONNECT, _
     nCameraID, 0
End Sub

4 在form上添加一个PictureBox,一个按钮,Caption设为 Save Pic
Dim Video_Handle As Long

Private Sub Form_Load()
     Video_Handle = CreateCaptureWindow(PicCapture.hwnd)
End Sub

Private Sub Command1_Click()
     Dim x As StdPicture
     Set x = CapturePicture(Video_Handle)
     SavePicture x, "c:\a.bmp"
End Sub

Private Sub Form_Unload(Cancel As Integer)
     Disconnect Video_Handle
End Sub
怎么样,可以通过VB控制摄像头了吧。
(责任编辑:maomao)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片