Smooth landmarks on significant face position or pose changes
This commit is contained in:
1 parent
ec0d5090fc
commit
74402be3ca
4 files changed
+16
-22
No files matched your search
@@ -248,7 +248,7 @@ void FaceLandmarkDetector::FindLandmarkThreadProc(size_t threadIndex)
|
||||
|
||||
localOutputLandmarks.faceRect = localInputFace.faceRect;
|
||||
localOutputLandmarks.frameIndex = localInputFace.frameIndex;
|
||||
localOutputLandmarks.similarity = localInputFace.similarity;
|
||||
localOutputLandmarks.noticeablyChanged = localInputFace.noticeablyChanged;
|
||||
localOutputLandmarks.valid = true;
|
||||
}
|
||||
else
|
||||
@@ -450,10 +450,11 @@ void FaceLandmarkDetector::InnerSeparateFacesToBuckets(std::vector<cv::Rect>& fa
|
||||
}
|
||||
}
|
||||
|
||||
inOutBucketArr[j].similarity = calcSimilarity(inOutBucketArr[j].faceFrame, facesBelongsToSpace[j][lastIndex].second);
|
||||
inOutBucketArr[j].faceRect = facesBelongsToSpace[j][lastIndex].first;
|
||||
inOutBucketArr[j].faceFrame = facesBelongsToSpace[j][lastIndex].second;
|
||||
|
||||
inOutBucketArr[j].noticeablyChanged =
|
||||
calcSimilarity(inOutBucketArr[j].faceFrame, facesBelongsToSpace[j][lastIndex].second) > 0.01 ||
|
||||
lastDistance > 100.0;
|
||||
|
||||
facesBelongsToSpace[j].erase(facesBelongsToSpace[j].begin() + lastIndex);
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ struct FaceIntermediateStruct
|
||||
cv::Mat faceFrame;
|
||||
|
||||
int frameIndex;
|
||||
double similarity = 0.0;
|
||||
bool noticeablyChanged = false;
|
||||
};
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ struct FaceLandmarkStruct
|
||||
std::array<cv::Point2f, LANDMARK_POINT_COUNT> landmarkArr;
|
||||
|
||||
int frameIndex;
|
||||
double similarity = 0.0;
|
||||
bool noticeablyChanged = false;
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user