这是我用来检测眼睛然后传输一些坐标的功能。
void detectAndDisplay(cv::Mat frame)
{
cv::Mat im1,im2;
std::vector<Rect> eye;
Mat frame_gray;
cv::cvtColor(frame,frame_gray,CV_BGR2GRAY);
eye_cascade.detectMultiScale(frame_gray,eye,1.1,2,0|CV_HAAR_SCALE_IMAGE,cv::Size(30,30));
for( int i = 0; i < eye.size(); i++ )
{
rectangle(frame,Point (eye[i].x,eye[i].y),Point (eye[i].x+eye[i].width, eye[i].y+eye[i].height),Scalar(255,0,0),4,8,0);
Mat noseROI = frame_gray(eye[i]);
x1=eye[i].x;
y3=eye[i].y;
x2=eye[i].width;
y2=eye[i].height;
}
imshow("Camera Feed",frame);
}
x1,x2,y2,y3是全局变量,我使用TCP / IP套接字程序将数据传输到其他程序。问题是,在识别出一次眼睛后,如果它们失焦,程序就会停止工作,并显示一条错误信息,说明有一个异常在for循环中没有处理。如果我将for循环包含在try-catch块中,则错误仍然存在。它可能是运行时异常。该怎么做才能摆脱它?