これは、目を検出して座標を送信するために使用した関数です。
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 ブロックで囲むと、エラーが持続します。実行時例外である可能性があります。それを取り除くために何をすべきですか?