From a58e7d9428e759e6bf215ec3b868b56d29a92b5d Mon Sep 17 00:00:00 2001 From: Epicalert Date: Wed, 31 Mar 2021 22:08:52 +0800 Subject: [PATCH] Force ROI for Facemark to be square This seems to help with Facemark accuracy. --- TODO.md | 7 ++++--- src/cv.cpp | 8 ++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/TODO.md b/TODO.md index 9acd895..7565add 100644 --- a/TODO.md +++ b/TODO.md @@ -4,7 +4,8 @@ - smoothing ## docs -- model format documentation +- getting started guide +- demo video? -## vision -- fix worse facemark on dnn mode (maybe due to non-square roi?) +## models +- better default model diff --git a/src/cv.cpp b/src/cv.cpp index 281a555..31d997a 100644 --- a/src/cv.cpp +++ b/src/cv.cpp @@ -83,10 +83,18 @@ void cvFrame() { biggestFace = i; biggestArea = iArea; } + + //force ROI to be square + faces[i] = cv::Rect(faces[i].x + faces[i].width / 2 - faces[i].height / 2, + faces[i].y, + faces[i].height, + faces[i].height); cv::rectangle (frame, faces[i], cv::Scalar (255, 255, 0)); } + //TODO: make a pointer to faces[biggestFace] and use that + std::vector> landmarks; if (facemark->fit (frame, faces, landmarks)) {