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

Uncle-Tan 发布于 2014/11/10 16:47
阅读 178
收藏 0

这是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));
    }



求大神帮忙解决



加载中
返回顶部
顶部