当前位置: 代码迷 >> QT开发 >> Qt+opencv获取摄像头个数有关问题
  详细解决方案

Qt+opencv获取摄像头个数有关问题

热度:192   发布时间:2016-04-25 03:07:10.0
Qt+opencv获取摄像头个数问题
这是Qt界面,想通过刷新来获取摄像头个数

int max = 0;
    CvCapture* tmp = NULL;
    //创建图像捕获缓存
    while ((tmp = cvCreateCameraCapture(max++))!= NULL);
    cvReleaseCapture(&tmp);
    tmp = NULL;
 
    for (int i = 0; i < max - 1 ; ++i)
    {
        cameraComboBox->addItem(tr("[ NO. %1 ]").arg(i + 1));
    }

下面这段代码实现不了,可以获取摄像头个数,但是问题来了,我把摄像头拔了,刷新后,还是显示是两个摄像头,而且即使把Qt界面关闭,编译器上显示 

 很显然,程序并没有结束,也不知道是什么问题,但肯定的是,问题出在上面这段代码中。

下面这段代码没有问题,可以实现,但是总觉得不够好。 
int max = 9;
    CvCapture* tmp = NULL;
 
    //创建图像捕获缓存
    while (max >= 0 && (tmp = cvCreateCameraCapture(max--)) == NULL)
        ;
    if((tmp = cvCreateCameraCapture(max+1)) == NULL) max--;
    cvReleaseCapture(&tmp);
    for(int i = 0; i < max+2 ; i++)
    {
        cameraComboBox->addItem(tr("[ NO. %1 ]").arg(i + 1));
    }


求大神帮忙解决
------解决思路----------------------
貌似OPENCV获得的摄像头个数是有问题的。 可以用Qt的CAMERA类来获取个数 , 控制用opencv来控制
------解决思路----------------------
楼主和楼上的也是在Qt中使用OpenCV吗?我最近也在学这一部分,可否留下联系方式以便交流?