Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ opencv在调用cv::VideoCapture::open之前检查摄像头是否已连接_C++_Opencv_Webcam - Fatal编程技术网

C++ opencv在调用cv::VideoCapture::open之前检查摄像头是否已连接

C++ opencv在调用cv::VideoCapture::open之前检查摄像头是否已连接,c++,opencv,webcam,C++,Opencv,Webcam,我正试图用opencv打开一个网络摄像头,但当没有摄像头连接时,应用程序会崩溃。 我试图用一个简单的计时器等待相机打开,但当我调用了未连接相机的open时,cv::VideoCapture::IsOpen()总是返回true事件。我的代码如下所示: void Widget::on_videoButton_clicked() { //1.OPEN THE CAMERA capWebcam.open(0); startTimer->start(700); } void Wid

我正试图用opencv打开一个网络摄像头,但当没有摄像头连接时,应用程序会崩溃。 我试图用一个简单的计时器等待相机打开,但当我调用了未连接相机的open时,cv::VideoCapture::IsOpen()总是返回true事件。我的代码如下所示:

void Widget::on_videoButton_clicked()
{
    //1.OPEN THE CAMERA
  capWebcam.open(0);
  startTimer->start(700);
}

void Widget::startTimerTimeout()
{

    if(capWebcam.isOpened()==false)
    {
        QMessageBox message;
        message.setText(" Camera not detected");
        message.exec();
        return;
    }

    //2.SHOW THE DIALOG

    mDialog.show();
   //3.START THE TIMER
    tmrTimer->start(100);
}
以下是我在构造器中的计时器,以使其有意义:

tmrTimer = new QTimer(this);
    connect(tmrTimer,SIGNAL(timeout()),this,SLOT(processFrameAndUpdateGui()));

    startTimer=new QTimer(this);
    startTimer->setSingleShot(true);
    connect(startTimer,SIGNAL(timeout()),this,SLOT(startTimerTimeout()));
在开始拍摄帧之前,是否有其他方法检查是否连接了摄像头?如果这是显而易见的,我很抱歉,因为我是openvc新手,opencv上的文档对这个问题没有太大帮助


谢谢您的时间。

尝试使用cv::VideoCapture(-1)谢谢您的回复,我可以使用什么意思?我检查是否连接了摄像头?我试图将该行附加到构造函数的末尾,这会导致对话框选择一个视频设备(显示我的集成摄像头)。如果我在没有连接摄像头的机器上运行应用程序,则不会显示任何内容,并且isOpen总是像以前一样返回true。很抱歉,我的设备上没有opencv,而不是使用capWebcam提供cam的ID。打开(0);您可以尝试capWebcam.open(-1),假设capWebcam是您的cam结构