feat: updated face mesh lib class name

This commit is contained in:
dmaletskiy 2021-07-01 16:00:21 +03:00
parent de5fc2a532
commit c48c01ca75
3 changed files with 26 additions and 24 deletions

View File

@ -21,7 +21,7 @@ int main(int argc, char **argv) {
LOG(INFO) << "VideoCapture initialized."; LOG(INFO) << "VideoCapture initialized.";
FaceMeshDetector *faceMeshDetector = FaceMeshDetector_Construct(); MPFaceMeshDetector *faceMeshDetector = FaceMeshDetector_Construct();
LOG(INFO) << "FaceMeshDetector constructed."; LOG(INFO) << "FaceMeshDetector constructed.";

View File

@ -2,14 +2,14 @@
#include "face_mesh_lib.h" #include "face_mesh_lib.h"
FaceMeshDetector::FaceMeshDetector() { MPFaceMeshDetector::MPFaceMeshDetector() {
const auto status = InitFaceMeshDetector(); const auto status = InitFaceMeshDetector();
if (!status.ok()) { if (!status.ok()) {
LOG(INFO) << "Failed constructing FaceMeshDetector."; LOG(INFO) << "Failed constructing FaceMeshDetector.";
} }
} }
absl::Status FaceMeshDetector::InitFaceMeshDetector() { absl::Status MPFaceMeshDetector::InitFaceMeshDetector() {
LOG(INFO) << "Get calculator graph config contents: " << graphConfig; LOG(INFO) << "Get calculator graph config contents: " << graphConfig;
mediapipe::CalculatorGraphConfig config = mediapipe::CalculatorGraphConfig config =
@ -37,8 +37,8 @@ absl::Status FaceMeshDetector::InitFaceMeshDetector() {
return absl::Status(); return absl::Status();
} }
absl::Status FaceMeshDetector::ProcessFrameWithStatus( absl::Status MPFaceMeshDetector::ProcessFrameWithStatus(
cv::Mat &camera_frame, const cv::Mat &camera_frame,
std::unique_ptr<std::vector<std::vector<cv::Point2f>>> std::unique_ptr<std::vector<std::vector<cv::Point2f>>>
&multi_face_landmarks) { &multi_face_landmarks) {
// Wrap Mat into an ImageFrame. // Wrap Mat into an ImageFrame.
@ -115,7 +115,7 @@ absl::Status FaceMeshDetector::ProcessFrameWithStatus(
} }
std::vector<std::vector<cv::Point2f>> * std::vector<std::vector<cv::Point2f>> *
FaceMeshDetector::ProcessFrame2D(cv::Mat &camera_frame) { MPFaceMeshDetector::ProcessFrame2D(const cv::Mat &camera_frame) {
auto landmarks = std::make_unique<std::vector<std::vector<cv::Point2f>>>(); auto landmarks = std::make_unique<std::vector<std::vector<cv::Point2f>>>();
ProcessFrameWithStatus(camera_frame, landmarks); ProcessFrameWithStatus(camera_frame, landmarks);
@ -124,25 +124,27 @@ FaceMeshDetector::ProcessFrame2D(cv::Mat &camera_frame) {
} }
extern "C" { extern "C" {
DLLEXPORT FaceMeshDetector *FaceMeshDetector_Construct() { DLLEXPORT MPFaceMeshDetector *FaceMeshDetector_Construct() {
return new FaceMeshDetector(); return new MPFaceMeshDetector();
} }
DLLEXPORT void FaceMeshDetector_Destruct(FaceMeshDetector *detector) { DLLEXPORT void FaceMeshDetector_Destruct(MPFaceMeshDetector *detector) {
delete detector; delete detector;
} }
DLLEXPORT void *FaceMeshDetector_ProcessFrame2D(FaceMeshDetector *detector, DLLEXPORT void *
cv::Mat &camera_frame) { FaceMeshDetector_ProcessFrame2D(MPFaceMeshDetector *detector,
const cv::Mat &camera_frame) {
return reinterpret_cast<void *>(detector->ProcessFrame2D(camera_frame)); return reinterpret_cast<void *>(detector->ProcessFrame2D(camera_frame));
} }
} }
const char FaceMeshDetector::kInputStream[] = "input_video"; const char MPFaceMeshDetector::kInputStream[] = "input_video";
const char FaceMeshDetector::kOutputStream_landmarks[] = "multi_face_landmarks"; const char MPFaceMeshDetector::kOutputStream_landmarks[] =
const char FaceMeshDetector::kOutputStream_faceCount[] = "face_count"; "multi_face_landmarks";
const char MPFaceMeshDetector::kOutputStream_faceCount[] = "face_count";
const std::string FaceMeshDetector::graphConfig = R"pb( const std::string MPFaceMeshDetector::graphConfig = R"pb(
# MediaPipe graph that performs face mesh with TensorFlow Lite on CPU. # MediaPipe graph that performs face mesh with TensorFlow Lite on CPU.
# Input image. (ImageFrame) # Input image. (ImageFrame)

View File

@ -25,16 +25,16 @@
#include "mediapipe/framework/port/parse_text_proto.h" #include "mediapipe/framework/port/parse_text_proto.h"
#include "mediapipe/framework/port/status.h" #include "mediapipe/framework/port/status.h"
class FaceMeshDetector { class MPFaceMeshDetector {
public: public:
FaceMeshDetector(); MPFaceMeshDetector();
~FaceMeshDetector() = default; ~MPFaceMeshDetector() = default;
std::vector<std::vector<cv::Point2f>> *ProcessFrame2D(cv::Mat &camera_frame); std::vector<std::vector<cv::Point2f>> *ProcessFrame2D(const cv::Mat &camera_frame);
private: private:
absl::Status InitFaceMeshDetector(); absl::Status InitFaceMeshDetector();
absl::Status absl::Status
ProcessFrameWithStatus(cv::Mat &camera_frame, ProcessFrameWithStatus(const cv::Mat &camera_frame,
std::unique_ptr<std::vector<std::vector<cv::Point2f>>> std::unique_ptr<std::vector<std::vector<cv::Point2f>>>
&multi_face_landmarks); &multi_face_landmarks);
@ -54,12 +54,12 @@ private:
extern "C" { extern "C" {
#endif #endif
DLLEXPORT FaceMeshDetector *FaceMeshDetector_Construct(); DLLEXPORT MPFaceMeshDetector *FaceMeshDetector_Construct();
DLLEXPORT void FaceMeshDetector_Destruct(FaceMeshDetector *detector); DLLEXPORT void FaceMeshDetector_Destruct(MPFaceMeshDetector *detector);
DLLEXPORT void *FaceMeshDetector_ProcessFrame2D(FaceMeshDetector *detector, DLLEXPORT void *FaceMeshDetector_ProcessFrame2D(MPFaceMeshDetector *detector,
cv::Mat &camera_frame); const cv::Mat &camera_frame);
#ifdef __cplusplus #ifdef __cplusplus
}; };