如何用vb调用摄像头

guo88455648 2011-02-27 01:57:36
自己这几天打算用vb做个云台控制软件,想在软件里面通过一个picture控件显示摄像头拍摄到的画面,摄像头就是平常用的那种免驱的usb接口的摄像头,虽然网上这方面的东西很多,但是picture里面得到的画面都是黑,没有图像,该怎么弄呢。

Dim Video_Handle As Long

Private Sub Command2_Click()
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 Command3_Click()
Disconnect Video_Handle
End Sub

Private Sub Form_Unload(Cancel As Integer)
Disconnect Video_Handle
End Sub



这是网上找到的一段程序,运行以后画面只是黑的。
...全文
2254 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhu476799547 2012-02-03
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 gonghua_21 的回复:]

Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" _
Alias "capCreateCaptureWindowA" ( _
ByVal lpszWindowName As String, _
ByVal dwStyle As Long, _
ByVal x As Long, _
ByVal y As ……
[/Quote]

我照你的代码做了,但是出来的画面是乱跳的
CplusHua 2011-08-02
  • 打赏
  • 举报
回复
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 Preview_Handle As Long

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 Function CapturePicture(nCaptureHandle As Long) As StdPicture
Clipboard.Clear
SendMessage nCaptureHandle, WM_CAP_EDIT_COPY, 0, 0
Set CapturePicture = Clipboard.GetData
End Function

Private Sub Command1_Click()
SavePicture Picture1.Picture, "c:\a.bmp"
End Sub

Private Sub Command2_Click()
Picture1.Picture = CapturePicture(Preview_Handle)
End Sub

Private Sub Form_Load()
Preview_Handle = capCreateCaptureWindow("Video", WS_CHILD + WS_VISIBLE, 2, 2, 220, 156, Me.hwnd, 1)
SendMessage Preview_Handle, WM_CAP_DRIVER_CONNECT, 0, 0
SendMessage Preview_Handle, WM_CAP_SET_PREVIEWRATE, 1, 0
SendMessage Preview_Handle, WM_CAP_SET_PREVIEW, 1, 0
End Sub

Private Sub Form_Unload(Cancel As Integer)
SendMessage Preview_Handle, WM_CAP_DRIVER_DISCONNECT, 0, 0
End Sub
ddan 2011-03-08
  • 打赏
  • 举报
回复
用控件 ezVidC60.ocx ezVidCap.ocx 以前用过。
guo88455648 2011-03-02
  • 打赏
  • 举报
回复
今天自己换了一个摄像头,可以看到摄像头工作指示灯亮,但是图片是全黑的,是不是什么设置有问题啊。
贝隆 2011-03-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 newnazi 的回复:]
最好使用厂家提供的开发包
不然累死你
[/Quote]
没有那么严重的。这个又不是什么很高深的东西。
newnazi 2011-03-01
  • 打赏
  • 举报
回复
最好使用厂家提供的开发包
不然累死你
贝隆 2011-03-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 guo88455648 的回复:]
引用 3 楼 veron_04 的回复:

http://download.csdn.net/source/2979383




这个程序摄像头打开也是黑的,没有图像
[/Quote]
不会吧?我用这个用的很好啊。是不是有别的原因啊?
cxy5636917 2011-03-01
  • 打赏
  • 举报
回复
声明这个API CreateCaptureWindow(
咸清 2011-02-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 guo88455648 的回复:]

引用 3 楼 veron_04 的回复:

http://download.csdn.net/source/2979383
这个程序摄像头打开也是黑的,没有图像
[/Quote]

你用通用驱动试试摄像头,是不是摄像头有问题。
然后,看看那个驱动的设置是不是有问题。
guo88455648 2011-02-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yugui 的回复:]

用VB操作视频,拍照,我用过很多,不是很理想,关键是卡,而且慢。可以考虑调用第三方控件。
[/Quote]


那怎么调用啊?
guo88455648 2011-02-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 veron_04 的回复:]

http://download.csdn.net/source/2979383
[/Quote]



这个程序摄像头打开也是黑的,没有图像
贝隆 2011-02-27
  • 打赏
  • 举报
回复
dbcontrols 2011-02-27
  • 打赏
  • 举报
回复
picture里面得到的画面都是黑,应该把把如何在picture里面得到的画面代码贴一下
另外该问问厂家有没有vb开发的demo
天锋 2011-02-27
  • 打赏
  • 举报
回复
用VB操作视频,拍照,我用过很多,不是很理想,关键是卡,而且慢。可以考虑调用第三方控件。

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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