vb.net怎么调用摄像头拍照

2025-10-18 13:30:52

1、Imports SystemImports System.Runtime.InteropServicesImports System.DrawingImports System.Drawing.ImagingClass Camera    Private Const WM_CAP_START = WM_USER    Private Const WM_CAP_STOP = WM_CAP_START + 68    Private Const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10    Private Const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11    Private Const WM_CAP_SAVEDIB = WM_CAP_START + 25    Private Const WM_CAP_GRAB_FRAME = WM_CAP_START + 60    Private Const WM_CAP_SEQUENCE = WM_CAP_START + 62    Private Const WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20    Private Const WM_CAP_SEQUENCE_NOFILE = WM_CAP_START + 63    Private Const WM_CAP_SET_OVERLAY = WM_CAP_START + 51    Private Const WM_CAP_SET_PREVIEW = WM_CAP_START + 50    Private Const WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START + 6    Private Const WM_CAP_SET_CALLBACK_ERROR = WM_CAP_START + 2    Private Const WM_CAP_SET_CALLBACK_STATUSA = WM_CAP_START + 3    Private Const WM_CAP_SET_CALLBACK_FRAME = WM_CAP_START + 5    Private Const WM_CAP_SET_SCALE = WM_CAP_START + 53    Private Const WM_CAP_SET_PREVIEWRATE = WM_CAP_START + 52    Sub New(ByVal I As PictureBox)        o = I    End Sub    

vb.net怎么调用摄像头拍照

vb.net怎么调用摄像头拍照

2、        SendMessage(M_Handle, WM_CAP_EDIT_COPY, 0, 0)        Return Clipboard.GetImage    End Function    Function CreateCaptureWindow(ByVal hWndParent As PictureBox,         ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer,         ByVal nCameraID As Integer) As Integer        Dim Preview_Handle As Integer        Preview_Handle = capCreateCaptureWindow("Video", _        WS_CHILD + WS_VISIBLE, x, y, _        hWndParent.Width, hWndParent.Height, hWndParent.Handle, 0)        Dim BOOL As Boolean        BOOL = SendMessage(Preview_Handle, WM_CAP_DRIVER_CONNECT, nCameraID, 0) 'ncameraid(视频只有一个为0,多个以此类推)        If (BOOL = False) Then            MsgBox("没有找到视频设备!")        End If        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)        M_Handle = Preview_Handle        Return Preview_Handle    End Function   

vb.net怎么调用摄像头拍照

3、 Dim blnRunning As Boolean = False    Public Sub Disconnect()        SendMessage(M_Handle, WM_CAP_DRIVER_DISCONNECT, 0, 0)    End Sub    Dim blnRecording As Boolean = False    '录像     Public Sub KineScope(ByVal path As String)        If blnRecording Then            Return        Else            blnRecording = True        End If        'path:要保存avi文件的路径         Dim hBmp As IntPtr = Marshal.StringToHGlobalAnsi(path)        SendMessage(M_Handle, WM_CAP_FILE_SET_CAPTURE_FILEA, 0, hBmp.ToInt64())        SendMessage(M_Handle, WM_CAP_SEQUENCE, 0, 0)    End Sub    Public Sub StopKinescope()        If blnRecording Then            SendMessage(M_Handle, WM_CAP_STOP, 0, 0)        End If        blnRecording = False    End SubEnd Class上面是camera.vb接口类

vb.net怎么调用摄像头拍照

4、下面是实现formPublic Class CamoraForm    Dim camora As New Camera(PictureBox1)    Private Sub CamoraForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load            End Sub    Private Sub CommendStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommendStart.Click        camora.CreateCaptureWindow(PictureBox1, 0, 0, PictureBox1.Width, PictureBox1.Height, 0)    End Sub    Private Sub CommendStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CommendStop.Click        camora.StopKinescope()        camora.Disconnect()    End Sub    

vb.net怎么调用摄像头拍照

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢