0

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

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

4

0 回答 0