#include #include #include #include #include using namespace std; using namespace cv; int main(){ // Load Haar cascades for face and eye detection CascadeClassifier face_cascade, eye_cascade; if (!face_cascade.load("haarcascade_frontalface_alt.xml") || !eye_cascade.load("haarcascade_eye.xml")) { cout << "Failed to load Haar cascades" << endl; return -1; } // Open camera feed VideoCapture cap(0); if (!cap.isOpened()){ cout << "Failed to open camera" << endl; return -1; } // Loop through frames while (true){ Mat frame; cap >> frame; // Convert frame to grayscale for face and eye detection Mat gray_frame; cvtColor(frame, gray_frame, COLOR_BGR2GRAY); // Detect faces vector faces; face_cascade.detectMultiScale(gray_frame, faces, 1.3, 5); // Loop through faces for (size_t i = 0; i < faces.size(); i++){ Rect face_rect = faces[i]; // Draw rectangle around face rectangle(frame, face_rect, Scalar(255, 0, 0), 2); // Extract ROI for face Mat face_roi = gray_frame(face_rect); // Detect eyes within face ROI (region of interest) vector eyes; eye_cascade.detectMultiScale(face_roi, eyes, 1.3, 5); // Loop through eyes for (size_t j = 0; j < eyes.size(); j++){ Rect eye_rect = eyes[j]; // Draw rectangle around eye rectangle(frame, Point(face_rect.x + eye_rect.x, face_rect.y + eye_rect.y), Point(face_rect.x + eye_rect.x + eye_rect.width, face_rect.y + eye_rect.y + eye_rect.height), Scalar(0, 255, 0), 2); // Calculate center of eye Point eye_center(face_rect.x + eye_rect.x + eye_rect.width / 2, face_rect.y + eye_rect.y + eye_rect.height / 2); // Draw circle at center of eye circle(frame, eye_center, 2, Scalar(0, 0, 255), 2); } } // Show frame imshow("Gaze Detection", frame); // Exit on key press if (waitKey(1) == 27) break; } return 0; }