同时用两个WEBEYE V2000摄像头摄像如何选取设备(急)

yxdm 2003-03-27 06:11:49
//第一个摄像头
hWndC = capCreateCaptureWindow (
(LPSTR) "My Capture Window", // window name if pop-up
WS_CHILD | WS_VISIBLE, // window style | WS_VISIBLE
200, 40, 280, 280, // window position and dimensions
(HWND) Handle,
1);
//在连接设备:
capDriverConnect (hWndC,0);
//预览图片:
capPreviewRate(hWndC, 66); // rate, in milliseconds
capPreview(hWndC, TRUE); // starts preview

//第二个摄像头
hWndC1 = capCreateCaptureWindow (
(LPSTR) "My Capture Window1", // window name if pop-up
WS_CHILD | WS_VISIBLE, // window style | WS_VISIBLE
600, 40, 280, 280, // window position and dimensions
(HWND) Handle,
2 /* child ID */);
//在连接设备:
capDriverConnect (hWndC1,1);
//预览图片:
capPreviewRate(hWndC1, 66); // rate, in milliseconds
capPreview(hWndC1, TRUE); // starts preview
...全文
163 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
muta 2003-10-01
  • 打赏
  • 举报
回复
使用BCB的話 從Win32 SDK help 裡搜尋 "Using Video Capture"
非常詳細
blackart 2003-09-10
  • 打赏
  • 举报
回复
mark
tonyzhao 2003-09-05
  • 打赏
  • 举报
回复
我也遇到了类似的问题。我的机器连接了两个USB摄像头,单独播放没问题,但两个同时采集时,第二个设备始终无法连接:
capDriverConnect (hWnd,0); 连接返回值 TRUE
capDriverConnect (hWnd1,1); 连接返回值 FALSE
不知为什么?
humanistor 2003-09-03
  • 打赏
  • 举报
回复
我刚开始学习摄像头,还没有入门,很想向大家学习,大家能不能给我发一份,谢谢!!
Email: humanistor@sina.com
dream_pzy 2003-08-26
  • 打赏
  • 举报
回复
我在处理摄像头和扫描仪时候用TWAIN,也出现过类似的问题,本来应该调扫描仪,结果摄像头出来了,后来想了个办法,先改动程序选择一下输入源,运行一次程序,选择后运行正常,然后再改动程序,去掉输入源选择的对话框,再编译一次运行也正常了,也很迷糊,一起分析一下。
有什么结果给我也发一个看看? Email: dream_s@sohu.com
yuyulily 2003-08-24
  • 打赏
  • 举报
回复
学习一下,有资料也给我一份啊,谢谢:
yu.hermit@sina.com
francohe 2003-08-24
  • 打赏
  • 举报
回复
To:yxdm(杨云天) 我也有个摄像头,看了你的帖子也想自己些个应用程序,能不能发点资料个给我研究研究呢?Email:francohe@sina.com
yxdm 2003-04-03
  • 打赏
  • 举报
回复
up
dodog 2003-03-30
  • 打赏
  • 举报
回复
这个问题我就不大清楚了,为什么在我的机子上能够用在你的机子上就用不起来,你发给我的代码我修改了一下,修正了button3使之能够显示设备名称,已经发到你邮箱里了,请注意收阅。
yxdm 2003-03-29
  • 打赏
  • 举报
回复
我在家里试了你说的方法仍然不好使。netmeeting可以设置视频了,两个摄像头(驱动程序分别为:"webeye 2000B USB Camera"和"webeye PC350 USB Camera") 都在netmeeting中用了一下,然后把netmeeting关闭。我的程序仍然还是只有左边捕获窗有图像,具体接哪个摄像头还是只和vidcap32.exe最后使用的保持一致,与netmeeting最后用的无关。
但我发现了一个奇怪的现象,可能有助于分析:点击button1打开捕获窗后,不点button2关闭,直接再点一次button1,这时自动弹出选设备的对话框,选另一个设备,确定后在第一个捕获窗的位置,两个摄像头的图像会交替出现。
dodog 2003-03-29
  • 打赏
  • 举报
回复
我的摄像头是不同型号的(明基的和开元的),我点netmeetting 选项的时候出现了假死的情况,耐心点等待一会儿就好了,不知道你得怎样!还有,用netmeetting 初始化一次就好了,用不着每次都这样初始化。
yxdm 2003-03-29
  • 打赏
  • 举报
回复
我今天在实验室试你说的方法,遇到了意想不到的情况。
我的netmeeting一点"选项"就死了。
后来在另一台机器上试,只安装一个webeye时netmeeting可以进入选项,安装完另一个(因为两个usb口)系统重起前可以进入选项,但设备列表中只有一个摄像头。重起后就又无法进入选项了,拔掉一个,再重起也不行,全拔了也不行,都是一点选项netmeeting就死掉。
我家里的机器虽然装了两个摄像头,但其中一个我用的是其它驱动程序(本以为这样,我的程序就能分辨出设备号了)。昨天晚上我只有一个摄像头,netmeeting能进行选项设置。今晚我回家再试试两个摄像头可不可以。
你的两个摄像头不是同一型号的吧?
dodog 2003-03-28
  • 打赏
  • 举报
回复
建议:先做一个Enumerating Installed Capture Drivers具体如下:
char szDeviceName[80];
char szDeviceVersion[80];

for (wIndex = 0; wIndex < 10; wIndex++)
{
if (capGetDriverDescription (wIndex, szDeviceName,
sizeof (szDeviceName), szDeviceVersion,
sizeof (szDeviceVersion))
{
// Append name to list of installed capture drivers
// and then let the user select a driver to use.
}
}
还有,如果你想把程序做得更好,建议不要使用预览capPreviewRate(hWndC1, 66); capPreview(hWndC1, TRUE); ,你使用回调函数
LRESULT CALLBACK capVideoStreamCallback(
HWND hWnd,
LPVIDEOHDR lpVHdr
);然后使用DrawDibDraw()把摄像头采集的数据画出来。
yxdm 2003-03-28
  • 打赏
  • 举报
回复
我现在手头上只剩一个摄像头了(一个留在了实验室),明天才能验证,万分感谢。

但不知机器重起后是否需要重新设置。
这个软件是给工厂做的,用户可以算是计算机盲,总不能让人家每天自己设啊,不过总算有了重大进展,你就是我的大救星啊。
如果设完了以后重起也没问题,还算说的过去,若今天你有兴趣试一下的话,别忘了告诉我结果。
dodog 2003-03-28
  • 打赏
  • 举报
回复
TO: yxdm(杨云天)兄:
首先告诉你一个好消息,我弄到了两个摄像头,你发给我得东东蛮好的,没有问题,不过一开始是有你说的问题,就是capDriverConnect (hWndC1,id)中的id=1的时候不好连接设备,后来我用windows2000自带的netmeetting重新初始化了一下设备,这样两个摄像头就可以同时抓取图像了,具体方法是:启动netmeetting--> 工具--〉选项--〉--〉视频--〉食品摄像机的属性 下 把你安装的两个摄像头都使用一遍 然后你的问题就可解决了 ,但是我又有一个疑惑,就是为什么这样做就可以了呢??????正在郁闷中。。。。。。。。如果解决了你的问题请不要忘记告诉我一声。
dodog 2003-03-28
  • 打赏
  • 举报
回复
我以前使用ShowMessage(szDeviceName)来测试的,你可以试试看设备有没有连接成功。至于“同类型的设备好像不能用capDriverConnect (hWndC1,id)来切换。”不好意思,我不大了解,也没有条件,很抱歉!
yxdm 2003-03-28
  • 打赏
  • 举报
回复
capGetDriverDescription (wIndex, szDeviceName,
sizeof (szDeviceName), szDeviceVersion,
sizeof (szDeviceVersion)
获得的设备名怎么显示出来

capDriverConnect (hWndC1,id):id=0时hwndc能捕获到图像,id=1时就不好使
只有一个设备时,不论在哪个usb口上,只要id=0,就能连上。
两个设备时,连接的是最后一次用vidcap32.exe(winnt目录下的程序,我本来是用它copy图片的,也是因为不能自动选设备才不用的)时选定的设备。

其实只要知道资源选择操作后系统是怎么连接设备的就可以了。不知你能不能弄到两个摄像头,帮我解决一下。
我昨天在网上看到,同类型的设备好像不能用capDriverConnect (hWndC1,id)来切换。
yxdm 2003-03-27
  • 打赏
  • 举报
回复
创建了两个捕获窗,但只有
capDriverConnect (hWndC1,0);
—设备号为零的才能捕获到图像
而且使用的设备不是固定的某个usb口的设备,而是最后一次用vidcap32.exe时选定的设备。

如何同时捕获两个摄像头的图像?

13,873

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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