0
回答
Qt+opencv获取摄像头个数问题
【腾讯云】校园拼团福利,1核2G服务器10元/月!>>>   

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



求大神帮忙解决



<无标签>
举报
Uncle-Tan
发帖于3年前 0回/168阅
顶部