Quantcast
Channel: OpenCV Q&A Forum - Latest question feed
Viewing all articles
Browse latest Browse all 19555

eye landmark points

$
0
0
Hi I'm using facial landmark detector (dlib) to detect eye blinks . How the eye landmarks can be imported to a file ? I need to use eye landmarks to calculate the ration between height and width of eye and to use SVM to classify blinks Update : when I try to write landmark point to a file , different valuses are saved than the displayed landmarks in terminal windows , how to fix ? Thanks #include #include #include #include #include #include using namespace dlib; using namespace std; int main() { try { cv::VideoCapture cap(0); if (!cap.isOpened()) { cerr << "Unable to connect to camera" << endl; return 1; } image_window win; frontal_face_detector detector = get_frontal_face_detector(); shape_predictor pose_model; deserialize("shape_predictor_68_face_landmarks.dat") >> pose_model; while(!win.is_closed()) { cv::Mat temp; cap >> temp; cv_image cimg(temp); // Detect faces std::vector faces = detector(cimg); // Find the pose of each face. std::vector shapes; ofstream outputfile; outputfile.open("data1.csv"); for (unsigned long i = 0; i < faces.size(); ++i) { full_object_detection shape = pose_model(cimg, faces[i]); cout << "number of parts: "<< shape.num_parts() << endl; cout << "Eye Landmark points for right eye : "<< endl; cout << "pixel position of 36 part: " << shape.part(36) << endl; cout << "pixel position of 37 part: " << shape.part(37) << endl; cout << "pixel position of 38 part: " << shape.part(38) << endl; cout << "pixel position of 39 part: " << shape.part(39) << endl; cout << "pixel position of 40 part: " << shape.part(40) << endl; cout << "pixel position of 41 part: " << shape.part(41) << endl; cout << endl; cout << "Eye Landmark points for left eye : "<< endl; cout << "pixel position of 42 part: " << shape.part(42) << endl; cout << "pixel position of 43 part: " << shape.part(43) << endl; cout << "pixel position of 44 part: " << shape.part(44) << endl; cout << "pixel position of 45 part: " << shape.part(45) << endl; cout << "pixel position of 46 part: " << shape.part(46) << endl; cout << "pixel position of 47 part: " << shape.part(47) << endl; double P37_41_x = shape.part(37).x() - shape.part(41).x(); double P37_41_y= shape.part(37).y() -shape.part(41).y() ; double p37_41_sqrt=sqrt((P37_41_x * P37_41_x) + (P37_41_y * P37_41_y)); double P38_40_x = shape.part(38).x() - shape.part(40).x(); double P38_40_y = shape.part(38).y() - shape.part(40).y(); double p38_40_sqrt=sqrt((P38_40_x * P38_40_x) + (P38_40_y * P38_40_y)); double P36_39_x = shape.part(36).x() - shape.part(39).x(); double P36_39_y = shape.part(36).y() - shape.part(39).y(); double p36_39_sqrt=sqrt((P36_39_x * P36_39_x) + (P36_39_y * P36_39_y)); double EAR= p37_41_sqrt + p38_40_sqrt/2* p36_39_sqrt; cout << "EAR value = " << EAR << endl; shapes.push_back(pose_model(cimg, faces[i])); const full_object_detection& d = shapes[0]; } win.clear_overlay(); win.set_image(cimg); win.add_overlay(render_face_detections(shapes)); } } catch(serialization_error& e) { cout << "You need dlib's default face landmarking model file to run this example." << endl; cout << "You can get it from the following URL: " << endl; cout << " http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2" << endl; cout << endl << e.what() << endl; } catch(exception& e) { cout << e.what() << endl; } }

Viewing all articles
Browse latest Browse all 19555

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>