我的小程序用于读取相机进纸,它工作正常。但是当运行应用程序期间相机连接丢失时,应用程序终止。实际上应用程序控制不能从cvCaptureFromFile()函数中出来,并且在一段时间后它给了我错误。当我在运行应用程序期间丢失相机连接时我想控制cvCaptureFromFile()函数意味着我想让我的应用程序进入相机的下一帧的等待模式,当相机连接回来时我的应用程序应该从相机自动启动读取帧。我想这样做。我尝试了很多,但无法得到任何解决方案。 我使用的是opencv 2.4.4版本。
我的cpp文件
#include "stdafx.h"
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <opencv2/imgproc/imgproc.hpp>
#include "stdio.h"
using namespace cv;
using namespace std;
char key;
IplImage* frame = cvCreateImage(cvSize(640,360),8,3);
int main()
{
IplImage *frame1;
back:
CvCapture* input = cvCaptureFromFile("rtsp://admin:12345@10.101.16.112:554/ch1-s1?tcp");
if(!input)
{
printf("\nWaiting for camera connection.");
goto back;
}
while(1)
{
frame1 = cvQueryFrame(input);
/*if(frame1 == NULL)
printf("\nCamera is disconnected.");*/
cvResize(frame1,frame,1);
cvShowImage("frame", frame);
key = cvWaitKey(10);
if (char(key) == 27)
break;
}
cvReleaseCapture(&input);
return 0;
}
提前致谢。
答案 0 :(得分:0)
我不知道它是否会帮助你,但尝试一次......
1)如果您将相机连接到其中一个端口,那么您可以连续轮询它是否处于活动状态?如果没有激活,则摄像机断开连接并相应地等待它激活。
答案 1 :(得分:0)
我认为问题可能不在于cvCaptureFromFile()函数,而在于使用frame1 = cvQueryFrame(input)命令。您是否可以取消注释此命令下方的if语句,并阐明是否已打印出相机已断开连接。
很抱歉,但由于我目前无法访问opencv库,因此无法自行执行此操作