C++ opencv在调用cv::VideoCapture::open之前检查摄像头是否已连接
我正试图用opencv打开一个网络摄像头,但当没有摄像头连接时,应用程序会崩溃。 我试图用一个简单的计时器等待相机打开,但当我调用了未连接相机的open时,cv::VideoCapture::IsOpen()总是返回true事件。我的代码如下所示: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
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结构