directshow同时打开两个USB摄像头,为什么只显示一个

nwind_2008 2008-11-03 01:20:51
//设置摄像机CCD1
void CScrewVCDlg::OnSetCcd1()
{
// TODO: Add your command handler code here
m_nCameraNum=CCameraDS::CameraCount();
if(m_nCameraType==CCD_NO)
{
AfxMessageBox("请选择正确的相机类型!");
}
else
{
if(m_nCameraType == CCD_USB && m_nCameraNum >=1)
{
m_clsInputImage[CCD1].OnStop();
m_clsInputImage[CCD2].OnStop();
cvNamedWindow("LeftCamera", 0);
HWND LeftCAM = (HWND) cvGetWindowHandle("LeftCamera");
HWND hParent1 = ::GetParent(LeftCAM);
::SetParent(LeftCAM, GetDlgItem(IDC_PIC_CCD1)->m_hWnd);
::ShowWindow(hParent1, SW_HIDE);
m_clsInputImage[CCD1].OnStart(CCD1,"");
if(m_camera1.OpenCamera(CCD1,true))
{
while(1)
{
//获取一帧
IplImage *pFrame1 = m_camera1.QueryFrame();
//显示
cvShowImage("LeftCamera", pFrame1);
cvWaitKey(10);
}
}

}
}
}
//设置摄像机CCD2
void CScrewVCDlg::OnSetCcd2()
{
// TODO: Add your command handler code here
m_nCameraNum=CCameraDS::CameraCount();
if(m_nCameraType==CCD_NO)
{
AfxMessageBox("请选择正确的相机类型!");
}
else
{
if(m_nCameraType == CCD_USB && m_nCameraNum ==2)
{
m_clsInputImage[CCD2].OnStop();
cvNamedWindow("RightCamera", 0);
HWND RightCAM = (HWND) cvGetWindowHandle("RightCamera");
HWND hParent2 = ::GetParent(RightCAM);
::SetParent(RightCAM, GetDlgItem(IDC_PIC_CCD2)->m_hWnd);
::ShowWindow(hParent2, SW_HIDE);
m_clsInputImage[CCD2].OnStart(CCD2,"");
if(m_camera2.OpenCamera(CCD2,true))
{
while(2)
{
//获取一帧
IplImage *pFrame2 = m_camera2.QueryFrame();
//显示
cvShowImage("RightCamera", pFrame2);
cvWaitKey(100);
}
}
}
}
}
这种方法能打开第一个,但打开第二个没有反应。
...全文
877 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
libing64 2011-10-13
  • 打赏
  • 举报
回复
本人也是能够打开一个USB的和电脑自带的摄像头,无法打开两个USB
kuanghong 2009-02-05
  • 打赏
  • 举报
回复
现在也碰到了这个问题,关注。两个摄像头不能同时启动
fmmbupt 2008-12-20
  • 打赏
  • 举报
回复
关注啊。。。
fmmbupt 2008-12-20
  • 打赏
  • 举报
回复
同关注中....
nwind_2008 2008-11-05
  • 打赏
  • 举报
回复
请问有没有做过相关的东西,可以发一份给我看看不,我的邮箱robbert_2008@163.com,非常感谢。我现在主要是做一个硕士课题
三维重建是其中一部分,就是打不开两个USB摄像头
nwind_2008 2008-11-05
  • 打赏
  • 举报
回复
我改了也不行啊,去掉了m_clsInputImage[CCD2].OnStop();
我是采用一个一个调,按一个按钮调用一个摄像头。
m_nCameraNum=CCameraDS::CameraCount()显示有两个USB摄像头,为什么最终显示只有
一个,是不是线程要开两个
zhoulb_ndsc 2008-11-03
  • 打赏
  • 举报
回复
你在OnSetCcd1() 中stop掉CCD2做什么?
if(m_nCameraType == CCD_USB && m_nCameraNum >=1)
{
m_clsInputImage[CCD1].OnStop();
m_clsInputImage[CCD2].OnStop();
cvNamedWindow("LeftCamera", 0);
......
}
nwind_2008 2008-11-03
  • 打赏
  • 举报
回复
不好意思,实在没分,请高手帮忙

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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