用capCreateCaptureWindowA来控控制摄像头时可不可以调整摄像头的亮度或对比色之类的

wzckr 2011-10-20 09:12:05
因为程序是用来拍照,在拍照之前可能要把照片的效果调的好一点,所以可能要调整视频的亮度或颜色的鲜艳之类的,
我现在是用capCreateCaptureWindowA来控制摄像头
...全文
503 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
plum小梅 2013-12-28
  • 打赏
  • 举报
回复
能帮我写个拍图的代码不?
happytonice 2011-10-21
  • 打赏
  • 举报
回复
可以。
jshi123 2011-10-21
  • 打赏
  • 举报
回复
MCI_DGV_SETVIDEO_PARAMS params;
params.dwValue = -1;
mciSendCommand(deviceID, MCI_SETVIDEO, MCI_DGV_SETVIDEO_BRIGHTNESS, ref params);
http://msdn.microsoft.com/en-us/library/dd798401(v=vs.85).aspx
wzckr 2011-10-20
  • 打赏
  • 举报
回复
SendMessage(hWndC, WM_CAP_DLG_VIDEOSOURCE, 0, 0)
这条命令不要,我是想在界面上自己设置几个参数输入框,直接输入值来实现这些亮度,或对比度等的值的变动,
不是用这个命令打开系统的自带的对话框来设置
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 Dim video_handle As Long Private Sub form_load() Me.Top = 840 Me.Left = 11240 Me.Width = 4800 Me.Height = 4380 On Error Resume Next video_handle = CreateCaptureWindow(Form1.hWnd) End Sub Private Sub Command1_Click() 员工信息.Enabled = True On Error Resume Next If Dir$("D:\kkk.jpg") <> "" Then Kill "D:\kkk.jpg" End If Dim x As StdPicture Set x = CapturePicture(video_handle) SavePicture x, "D:\kkk.jpg" Disconnect (video_handle) video_handle = 0 Unload Form1 员工信息.SetFocus If Dir$("D:\kkk.jpg") = "" Then MsgBox "请先采集照片!" Command1.SetFocus Else Set 员工信息.Image1.Picture = LoadPicture("D:\kkk.jpg") Text1.Text = "" Clipboard.Clear End If Unload Me End Sub

16,552

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧