C++ 在OpenCV中关闭网络摄像头

C++ 在OpenCV中关闭网络摄像头,c++,opencv,ubuntu,webcam,C++,Opencv,Ubuntu,Webcam,我正在运行这个示例代码,它只是在屏幕上显示我的网络摄像头图像 CvCapture* capture = 0; Mat frame, frameCopy, image; capture = cvCaptureFromCAM( CV_CAP_ANY ); if( !capture ) { cout << "No camera detected" << endl; } cvNamedWindow( "

我正在运行这个示例代码,它只是在屏幕上显示我的网络摄像头图像

    CvCapture* capture = 0;
    Mat frame, frameCopy, image;

    capture = cvCaptureFromCAM( CV_CAP_ANY ); 
    if( !capture )
    {
        cout << "No camera detected" << endl;
    }

    cvNamedWindow( "result", CV_WINDOW_AUTOSIZE );

    if( capture )
    {
        for(;;)
        {
            IplImage* iplImg = cvQueryFrame( capture );
            frame = iplImg;

            if( frame.empty() )
                break;
            if( iplImg->origin == IPL_ORIGIN_TL )
                frame.copyTo( frameCopy );
            else
                flip( frame, frameCopy, 0 );

            cvShowImage( "result", iplImg );

            if( waitKey( 10 ) >= 0 )
                break;
        }
        cvReleaseCapture(&capture);
        waitKey(0);
    }
}
CvCapture*capture=0;
垫框、框架复制、图像;
捕获=cvCaptureFromCAM(CV\u CAP\u ANY);
如果(!捕获)
{
cout=0)
打破
}
cvReleaseCapture(&capture);
等待键(0);
}
}
当我在Windows上运行它时,相机在按预期执行函数cvReleaseCapture后关闭,而在Ubuntu中使用相同的代码时,相机在程序执行时保持打开(LED指示灯亮起,其他程序无法使用该设备)

没有显示错误消息,这里可能有什么问题


我使用的是OpenCV 2.4.7,我的网络摄像头是Logitech c170

你调试通过了吗?警告是什么?是的,忘了提到我在执行
cvCaptureFromCAM
时收到以下消息:
HIGHGUI错误:V4L/V4L2:VIDIOC\u S\u CROP
调试器没有向我显示任何其他警告。是否在启用\u V4L=的情况下构建opencv?您是否安装了一个gui依赖项?您是否安装了这些()依赖项?尝试更新gtk。请尝试使用qt支持重新安装(在_qt=ON的情况下)以明确说明:v4l(video4linux)是将各种相机设备输出转换为rgb值的库。i、 它是一个编解码器。opencv然后使用这些值。打开/关闭特定于gui的数据需要qt或gtk。highgui错误可能与这些错误中的任何一个有关。尝试了所有这些,唯一的变化是现在使用Qt时,窗口具有缩放和移动选项,但网络摄像头的行为是相同的。谢谢你的建议,我会继续查的