眼睛检测和异常处理

时间:2012-07-25 07:08:41

标签: c++ opencv computer-vision object-recognition

这是我用来检测眼睛然后传输一些坐标的功能。

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块中,则错误仍然存​​在。它可能是运行时异常。该怎么做才能摆脱它?

0 个答案:

没有答案