diff --git a/lib/local/FaceAnalyser/src/GazeEstimation.cpp b/lib/local/FaceAnalyser/src/GazeEstimation.cpp index 0278f1ac..bd3451bc 100644 --- a/lib/local/FaceAnalyser/src/GazeEstimation.cpp +++ b/lib/local/FaceAnalyser/src/GazeEstimation.cpp @@ -194,11 +194,11 @@ void FaceAnalysis::DrawGaze(cv::Mat img, const LandmarkDetector::CLNF& clnf_mode cv::Mat_ proj_points; cv::Mat_ mesh_0 = (cv::Mat_(2, 3) << points_left[0].x, points_left[0].y, points_left[0].z, points_left[1].x, points_left[1].y, points_left[1].z); LandmarkDetector::Project(proj_points, mesh_0, fx, fy, cx, cy); - cv::line(img, cv::Point(cvRound(proj_points.at(0,0) * gaze_draw_multiplier), cvRound(proj_points.at(0, 1) * gaze_draw_multiplier)), - cv::Point(cvRound(proj_points.at(1, 0) * gaze_draw_multiplier), cvRound(proj_points.at(1, 1) * gaze_draw_multiplier)), cv::Scalar(110, 220, 0), 2, CV_AA, gaze_draw_shiftbits); + cv::line(img, cv::Point(cvRound(proj_points.at(0,0) * (double)gaze_draw_multiplier), cvRound(proj_points.at(0, 1) * (double)gaze_draw_multiplier)), + cv::Point(cvRound(proj_points.at(1, 0) * (double)gaze_draw_multiplier), cvRound(proj_points.at(1, 1) * (double)gaze_draw_multiplier)), cv::Scalar(110, 220, 0), 2, CV_AA, gaze_draw_shiftbits); cv::Mat_ mesh_1 = (cv::Mat_(2, 3) << points_right[0].x, points_right[0].y, points_right[0].z, points_right[1].x, points_right[1].y, points_right[1].z); LandmarkDetector::Project(proj_points, mesh_1, fx, fy, cx, cy); - cv::line(img, cv::Point(cvRound(proj_points.at(0, 0) * gaze_draw_multiplier), cvRound(proj_points.at(0, 1) * gaze_draw_multiplier)), - cv::Point(cvRound(proj_points.at(1, 0) * gaze_draw_multiplier), cvRound(proj_points.at(1, 1) * gaze_draw_multiplier)), cv::Scalar(110, 220, 0), 2, CV_AA, gaze_draw_shiftbits); + cv::line(img, cv::Point(cvRound(proj_points.at(0, 0) * (double)gaze_draw_multiplier), cvRound(proj_points.at(0, 1) * (double)gaze_draw_multiplier)), + cv::Point(cvRound(proj_points.at(1, 0) * (double)gaze_draw_multiplier), cvRound(proj_points.at(1, 1) * (double)gaze_draw_multiplier)), cv::Scalar(110, 220, 0), 2, CV_AA, gaze_draw_shiftbits); } \ No newline at end of file diff --git a/lib/local/LandmarkDetector/include/Patch_experts.h b/lib/local/LandmarkDetector/include/Patch_experts.h index 94ef39d4..f1ab7386 100644 --- a/lib/local/LandmarkDetector/include/Patch_experts.h +++ b/lib/local/LandmarkDetector/include/Patch_experts.h @@ -116,7 +116,7 @@ public: int GetViewIdx(const cv::Vec6d& params_global, int scale) const; // The number of views at a particular scale - inline int nViews(int scale = 0) const { return centers[scale].size(); }; + inline int nViews(size_t scale = 0) const { return (int)centers[scale].size(); }; // Reading in all of the patch experts void Read(vector intensity_svr_expert_locations, vector depth_svr_expert_locations, vector intensity_ccnf_expert_locations); diff --git a/lib/local/LandmarkDetector/model/main_clnf_general.txt b/lib/local/LandmarkDetector/model/main_clnf_general.txt index 181a86af..ecb758d9 100644 --- a/lib/local/LandmarkDetector/model/main_clnf_general.txt +++ b/lib/local/LandmarkDetector/model/main_clnf_general.txt @@ -1,5 +1,5 @@ LandmarkDetector clnf_general.txt -LandmarkDetector_part model_inner/main_clnf_inner.txt inner 17 0 18 1 19 2 20 3 21 4 22 5 23 6 24 7 25 8 26 9 27 10 28 11 29 12 30 13 31 14 32 15 33 16 34 17 35 18 36 19 37 20 38 21 39 22 40 23 41 24 42 25 43 26 44 27 45 28 46 29 47 30 48 31 49 32 50 33 51 34 52 35 53 36 54 37 55 38 56 39 57 40 58 41 59 42 60 43 61 44 62 45 63 46 64 47 65 48 66 49 67 50 17 0 18 1 19 2 20 3 21 4 22 5 23 6 24 7 25 8 26 9 27 10 28 11 29 12 30 13 31 14 32 15 33 16 34 17 35 18 36 19 37 20 38 21 39 22 40 23 41 24 42 25 43 26 44 27 45 28 46 29 47 30 48 31 49 32 50 33 51 34 52 35 53 36 54 37 55 38 56 39 57 40 58 41 59 42 60 43 61 44 62 45 63 46 64 47 65 48 66 49 67 50 +LandmarkDetector_part model_inner/main_clnf_inner.txt inner 17 0 18 1 19 2 20 3 21 4 22 5 23 6 24 7 25 8 26 9 27 10 28 11 29 12 30 13 31 14 32 15 33 16 34 17 35 18 36 19 37 20 38 21 39 22 40 23 41 24 42 25 43 26 44 27 45 28 46 29 47 30 48 31 49 32 50 33 51 34 52 35 53 36 54 37 55 38 56 39 57 40 58 41 59 42 60 43 61 44 62 45 63 46 64 47 65 48 66 49 67 50 LandmarkDetector_part model_eye/main_clnf_synth_left.txt left_eye_28 36 8 37 10 38 12 39 14 40 16 41 18 LandmarkDetector_part model_eye/main_clnf_synth_right.txt right_eye_28 42 8 43 10 44 12 45 14 46 16 47 18 FaceDetConversion haarAlign.txt diff --git a/lib/local/LandmarkDetector/src/LandmarkDetectorParameters.cpp b/lib/local/LandmarkDetector/src/LandmarkDetectorParameters.cpp index ba1153f8..c0e74a36 100644 --- a/lib/local/LandmarkDetector/src/LandmarkDetectorParameters.cpp +++ b/lib/local/LandmarkDetector/src/LandmarkDetectorParameters.cpp @@ -191,7 +191,7 @@ FaceModelParameters::FaceModelParameters(vector &arguments) } } - for (int i = arguments.size() - 1; i >= 0; --i) + for (int i = (int)arguments.size() - 1; i >= 0; --i) { if (!valid[i]) { diff --git a/lib/local/LandmarkDetector/src/LandmarkDetectorUtils.cpp b/lib/local/LandmarkDetector/src/LandmarkDetectorUtils.cpp index fa19007d..c952e516 100644 --- a/lib/local/LandmarkDetector/src/LandmarkDetectorUtils.cpp +++ b/lib/local/LandmarkDetector/src/LandmarkDetectorUtils.cpp @@ -904,8 +904,8 @@ void DrawBox(cv::Mat image, cv::Vec6d pose, cv::Scalar color, int thickness, flo rotBoxProj.row(edges[i].second).copyTo(end); - cv::Point p1(cvRound(begin.at(0) * draw_multiplier), cvRound(begin.at(1) * draw_multiplier)); - cv::Point p2(cvRound(end.at(0) * draw_multiplier), cvRound(end.at(1) * draw_multiplier)); + cv::Point p1(cvRound(begin.at(0) * (double)draw_multiplier), cvRound(begin.at(1) * (double)draw_multiplier)); + cv::Point p2(cvRound(end.at(0) * (double)draw_multiplier), cvRound(end.at(1) * (double)draw_multiplier)); // Only draw the line if one of the points is inside the image if(p1.inside(image_rect) || p2.inside(image_rect)) @@ -1076,7 +1076,7 @@ void Draw(cv::Mat img, const cv::Mat_& shape2D, const cv::Mat_& vis { if(visibilities.at(i)) { - cv::Point featurePoint(cvRound(shape2D.at(i) * draw_multiplier), cvRound(shape2D.at(i + n) * draw_multiplier)); + cv::Point featurePoint(cvRound(shape2D.at(i) * (double)draw_multiplier), cvRound(shape2D.at(i + n) * (double)draw_multiplier)); // A rough heuristic for drawn point size int thickness = (int)std::ceil(3.0* ((double)img.cols) / 640.0); @@ -1092,7 +1092,7 @@ void Draw(cv::Mat img, const cv::Mat_& shape2D, const cv::Mat_& vis { for( int i = 0; i < n; ++i) { - cv::Point featurePoint(cvRound(shape2D.at(i) * draw_multiplier), cvRound(shape2D.at(i + n) * draw_multiplier)); + cv::Point featurePoint(cvRound(shape2D.at(i) * (double)draw_multiplier), cvRound(shape2D.at(i + n) * (double)draw_multiplier)); // A rough heuristic for drawn point size int thickness = 1.0; @@ -1106,7 +1106,7 @@ void Draw(cv::Mat img, const cv::Mat_& shape2D, const cv::Mat_& vis if(i == 27) next_point = 20; - cv::Point nextFeaturePoint(cvRound(shape2D.at(next_point) * draw_multiplier), cvRound(shape2D.at(next_point + n) * draw_multiplier)); + cv::Point nextFeaturePoint(cvRound(shape2D.at(next_point) * (double)draw_multiplier), cvRound(shape2D.at(next_point + n) * (double)draw_multiplier)); if( i < 8 || i > 19) cv::line(img, featurePoint, nextFeaturePoint, cv::Scalar(255, 0, 0), thickness_2, CV_AA, draw_shiftbits); else @@ -1119,7 +1119,7 @@ void Draw(cv::Mat img, const cv::Mat_& shape2D, const cv::Mat_& vis { for( int i = 0; i < n; ++i) { - cv::Point featurePoint(cvRound(shape2D.at(i) * draw_multiplier), cvRound(shape2D.at(i + n) * draw_multiplier)); + cv::Point featurePoint(cvRound(shape2D.at(i) * (double)draw_multiplier), cvRound(shape2D.at(i + n) * (double)draw_multiplier)); // A rough heuristic for drawn point size int thickness = 1.0; @@ -1129,7 +1129,7 @@ void Draw(cv::Mat img, const cv::Mat_& shape2D, const cv::Mat_& vis if(i == 5) next_point = 0; - cv::Point nextFeaturePoint(cvRound(shape2D.at(next_point) * draw_multiplier), cvRound(shape2D.at(next_point + n) * draw_multiplier)); + cv::Point nextFeaturePoint(cvRound(shape2D.at(next_point) * (double)draw_multiplier), cvRound(shape2D.at(next_point + n) * (double)draw_multiplier)); cv::line(img, featurePoint, nextFeaturePoint, cv::Scalar(255, 0, 0), thickness_2, CV_AA, draw_shiftbits); } } @@ -1155,11 +1155,11 @@ void Draw(cv::Mat img, const cv::Mat_& shape2D) cv::Point featurePoint; if(shape2D.cols == 1) { - featurePoint = cv::Point(cvRound(shape2D.at(i) * draw_multiplier), cvRound(shape2D.at(i + n) * draw_multiplier)); + featurePoint = cv::Point(cvRound(shape2D.at(i) * (double)draw_multiplier), cvRound(shape2D.at(i + n) * (double)draw_multiplier)); } else { - featurePoint = cv::Point(cvRound(shape2D.at(i, 0) * draw_multiplier), cvRound(shape2D.at(i, 1) * draw_multiplier)); + featurePoint = cv::Point(cvRound(shape2D.at(i, 0) * (double)draw_multiplier), cvRound(shape2D.at(i, 1) * (double)draw_multiplier)); } // A rough heuristic for drawn point size int thickness = (int)std::ceil(5.0* ((double)img.cols) / 640.0); diff --git a/matlab_runners/Feature Point Experiments/results/fps_yt.mat b/matlab_runners/Feature Point Experiments/results/fps_yt.mat index 7da2870e..af63eceb 100644 Binary files a/matlab_runners/Feature Point Experiments/results/fps_yt.mat and b/matlab_runners/Feature Point Experiments/results/fps_yt.mat differ diff --git a/matlab_runners/Feature Point Experiments/results/in-the-wild-res-no-outline.pdf b/matlab_runners/Feature Point Experiments/results/in-the-wild-res-no-outline.pdf index e2500eda..02921760 100644 Binary files a/matlab_runners/Feature Point Experiments/results/in-the-wild-res-no-outline.pdf and b/matlab_runners/Feature Point Experiments/results/in-the-wild-res-no-outline.pdf differ diff --git a/matlab_runners/Feature Point Experiments/results/landmark_detections.mat b/matlab_runners/Feature Point Experiments/results/landmark_detections.mat index cd7fb615..9548166b 100644 Binary files a/matlab_runners/Feature Point Experiments/results/landmark_detections.mat and b/matlab_runners/Feature Point Experiments/results/landmark_detections.mat differ diff --git a/matlab_runners/Full_test_suite.m b/matlab_runners/Full_test_suite.m index 6283f3f8..29cbbe69 100644 --- a/matlab_runners/Full_test_suite.m +++ b/matlab_runners/Full_test_suite.m @@ -1,8 +1,6 @@ % This is sort of the unit test for the whole module (needs datasets) % Will take over an hour to run all -% TODO need some unit testy things, some asserts - tic %% Head pose cd('Head Pose Experiments'); diff --git a/matlab_runners/Gaze Experiments/mpii_1500_errs.mat b/matlab_runners/Gaze Experiments/mpii_1500_errs.mat index 6c892cac..bb9f304c 100644 Binary files a/matlab_runners/Gaze Experiments/mpii_1500_errs.mat and b/matlab_runners/Gaze Experiments/mpii_1500_errs.mat differ diff --git a/matlab_runners/Head Pose Experiments/results/Pose_OF.mat b/matlab_runners/Head Pose Experiments/results/Pose_OF.mat index 247d83da..68e460cf 100644 Binary files a/matlab_runners/Head Pose Experiments/results/Pose_OF.mat and b/matlab_runners/Head Pose Experiments/results/Pose_OF.mat differ