【发布时间】:2018-07-04 20:01:57
【问题描述】:
我正在使用 opencv 2.4.9 mvsc++2012 和 Qt,当相机连接时,代码可以完美运行,但如果相机断开连接,代码会卡在 vcap.open(videostreamadress) 这是我的代码
const string videoStreamAddress="rtsp://admin:admin@192.168.1.11:88/live/h264/VGA";
VideoCapture vcap;
Mat image_input;
cameraOpen=true;
//first open the graphic widget to display the camera stream
ui.graphicsView->setEnabled(TRUE);
while ((vcap.open(videoStreamAddress)==true)&&(cameraOpen==true))
{
if(vcap.read(image_input)==false)
{
//QmessageBox
QMessageBox msgBox;
msgBox.setText("probleme de connexion a la caméra");
msgBox.exec();
//close_camera_feed();
break;
}
vcap.set(CV_CAP_PROP_FPS, 1);
//vcap.read(image_input);
qimage_input = QImage((const unsigned char*)(image_input.data),
image_input.cols,image_input.rows,
QImage::Format_RGB888).rgbSwapped();
image = QPixmap::fromImage(qimage_input);
scene = new QGraphicsScene(this);
scene->addPixmap(image);
scene->setSceneRect(image.rect());
ui.graphicsView->setScene(scene);
//to
qApp->processEvents();
//thread t1(task1, "Hello");
detect_license_plate(image_input);
}
if(vcap.open(videoStreamAddress)==false)
{
QMessageBox msgBox;
msgBox.setText("La Caméra est déconnecté, vérifier l'uinstallation");
msgBox.exec();
}
感谢您的帮助!
【问题讨论】:
-
为什么每次迭代都要初始化相机?更改两行:
while ((vcap.isOpened())){}和if(vcap.isOpened()==false){}。 -
我试过 vcap.isOpened() 也没有,对于 if(vcap.isOpened()==false){} 是知道while循环退出的原因(通过用户 (if(vcap.open(videoStreamAddress)==false)) 或因为相机离线。
标签: opencv visual-c++