我正在尝试使用opencv打开网络摄像头,但是当没有连接相机时应用程序崩溃了。 我试着用一个简单的计时器等待相机打开但cv :: VideoCapture :: isOpened()总是在我没有连接相机的情况下调用open时返回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上的文档对此问题没有那么有帮助。
感谢您的时间。