Live camera fix
This commit is contained in:
parent
0b4954e6c7
commit
d7bc754150
|
@ -148,11 +148,6 @@ namespace mediapipe
|
||||||
{
|
{
|
||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
if (cc->Inputs().HasTag(kMaskTag) &&
|
|
||||||
cc->Inputs().Tag(kMaskTag).IsEmpty())
|
|
||||||
{
|
|
||||||
return absl::OkStatus();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize render target, drawn with OpenCV.
|
// Initialize render target, drawn with OpenCV.
|
||||||
std::unique_ptr<cv::Mat> image_mat;
|
std::unique_ptr<cv::Mat> image_mat;
|
||||||
|
@ -163,14 +158,17 @@ namespace mediapipe
|
||||||
MP_RETURN_IF_ERROR(CreateRenderTargetCpu(cc, image_mat, &target_format));
|
MP_RETURN_IF_ERROR(CreateRenderTargetCpu(cc, image_mat, &target_format));
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<std::unordered_map<std::string, cv::Mat>> &mask_vec =
|
if (cc->Inputs().HasTag(kMaskTag) &&
|
||||||
cc->Inputs().Tag(kMaskTag).Get<std::vector<std::unordered_map<std::string, cv::Mat>>>();
|
!cc->Inputs().Tag(kMaskTag).IsEmpty())
|
||||||
if (mask_vec.size() > 0)
|
|
||||||
{
|
{
|
||||||
for (auto mask : mask_vec)
|
const std::vector<std::unordered_map<std::string, cv::Mat>> &mask_vec =
|
||||||
MP_RETURN_IF_ERROR(DrawLipstick(cc, image_mat, &target_format, mask));
|
cc->Inputs().Tag(kMaskTag).Get<std::vector<std::unordered_map<std::string, cv::Mat>>>();
|
||||||
|
if (mask_vec.size() > 0)
|
||||||
|
{
|
||||||
|
for (auto mask : mask_vec)
|
||||||
|
MP_RETURN_IF_ERROR(DrawLipstick(cc, image_mat, &target_format, mask));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy the rendered image to output.
|
// Copy the rendered image to output.
|
||||||
uchar *image_mat_ptr = image_mat->data;
|
uchar *image_mat_ptr = image_mat->data;
|
||||||
MP_RETURN_IF_ERROR(RenderToCpu(cc, target_format, image_mat_ptr, image_mat));
|
MP_RETURN_IF_ERROR(RenderToCpu(cc, target_format, image_mat_ptr, image_mat));
|
||||||
|
|
|
@ -164,16 +164,6 @@ namespace mediapipe
|
||||||
{
|
{
|
||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
if (cc->Inputs().HasTag(kMaskTag) &&
|
|
||||||
cc->Inputs().Tag(kMaskTag).IsEmpty())
|
|
||||||
{
|
|
||||||
return absl::OkStatus();
|
|
||||||
}
|
|
||||||
if (cc->Inputs().HasTag(kFaceBoxTag) &&
|
|
||||||
cc->Inputs().Tag(kFaceBoxTag).IsEmpty())
|
|
||||||
{
|
|
||||||
return absl::OkStatus();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize render target, drawn with OpenCV.
|
// Initialize render target, drawn with OpenCV.
|
||||||
ImageFormat::Format target_format;
|
ImageFormat::Format target_format;
|
||||||
|
@ -187,18 +177,23 @@ namespace mediapipe
|
||||||
image_width_ = image_mat->cols;
|
image_width_ = image_mat->cols;
|
||||||
image_height_ = image_mat->rows;
|
image_height_ = image_mat->rows;
|
||||||
|
|
||||||
const std::vector<std::unordered_map<std::string, cv::Mat>> &mask_vec =
|
if (cc->Inputs().HasTag(kMaskTag) &&
|
||||||
cc->Inputs().Tag(kMaskTag).Get<std::vector<std::unordered_map<std::string, cv::Mat>>>();
|
!cc->Inputs().Tag(kMaskTag).IsEmpty() &&
|
||||||
|
cc->Inputs().HasTag(kFaceBoxTag) &&
|
||||||
const std::vector<std::tuple<double, double, double, double>> &face_box =
|
!cc->Inputs().Tag(kFaceBoxTag).IsEmpty())
|
||||||
cc->Inputs().Tag(kFaceBoxTag).Get<std::vector<std::tuple<double, double, double, double>>>();
|
|
||||||
|
|
||||||
if (mask_vec.size() > 0 && face_box.size() > 0)
|
|
||||||
{
|
{
|
||||||
for (int i = 0; i < mask_vec.size(); i++)
|
const std::vector<std::unordered_map<std::string, cv::Mat>> &mask_vec =
|
||||||
MP_RETURN_IF_ERROR(SmoothFace(cc, &target_format, mask_vec[i], face_box[i]));
|
cc->Inputs().Tag(kMaskTag).Get<std::vector<std::unordered_map<std::string, cv::Mat>>>();
|
||||||
}
|
|
||||||
|
|
||||||
|
const std::vector<std::tuple<double, double, double, double>> &face_box =
|
||||||
|
cc->Inputs().Tag(kFaceBoxTag).Get<std::vector<std::tuple<double, double, double, double>>>();
|
||||||
|
|
||||||
|
if (mask_vec.size() > 0 && face_box.size() > 0)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < mask_vec.size(); i++)
|
||||||
|
MP_RETURN_IF_ERROR(SmoothFace(cc, &target_format, mask_vec[i], face_box[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
// Copy the rendered image to output.
|
// Copy the rendered image to output.
|
||||||
uchar *image_mat_ptr = image_mat->data;
|
uchar *image_mat_ptr = image_mat->data;
|
||||||
MP_RETURN_IF_ERROR(RenderToCpu(cc, target_format, image_mat_ptr));
|
MP_RETURN_IF_ERROR(RenderToCpu(cc, target_format, image_mat_ptr));
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
//#include <android/log.h>
|
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
@ -42,13 +41,6 @@ namespace mediapipe
|
||||||
constexpr char kMaskTag[] = "MASK";
|
constexpr char kMaskTag[] = "MASK";
|
||||||
constexpr char kImageFrameTag[] = "IMAGE";
|
constexpr char kImageFrameTag[] = "IMAGE";
|
||||||
|
|
||||||
enum
|
|
||||||
{
|
|
||||||
ATTRIB_VERTEX,
|
|
||||||
ATTRIB_TEXTURE_POSITION,
|
|
||||||
NUM_ATTRIBUTES
|
|
||||||
};
|
|
||||||
|
|
||||||
inline bool HasImageTag(mediapipe::CalculatorContext *cc) { return false; }
|
inline bool HasImageTag(mediapipe::CalculatorContext *cc) { return false; }
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
|
@ -153,11 +145,6 @@ namespace mediapipe
|
||||||
{
|
{
|
||||||
return absl::OkStatus();
|
return absl::OkStatus();
|
||||||
}
|
}
|
||||||
if (cc->Inputs().HasTag(kMaskTag) &&
|
|
||||||
cc->Inputs().Tag(kMaskTag).IsEmpty())
|
|
||||||
{
|
|
||||||
return absl::OkStatus();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Initialize render target, drawn with OpenCV.
|
// Initialize render target, drawn with OpenCV.
|
||||||
ImageFormat::Format target_format;
|
ImageFormat::Format target_format;
|
||||||
|
@ -170,14 +157,17 @@ namespace mediapipe
|
||||||
image_width_ = image_mat->cols;
|
image_width_ = image_mat->cols;
|
||||||
image_height_ = image_mat->rows;
|
image_height_ = image_mat->rows;
|
||||||
|
|
||||||
const std::vector<std::unordered_map<std::string, cv::Mat>> &mask_vec =
|
if (cc->Inputs().HasTag(kMaskTag) &&
|
||||||
cc->Inputs().Tag(kMaskTag).Get<std::vector<std::unordered_map<std::string, cv::Mat>>>();
|
!cc->Inputs().Tag(kMaskTag).IsEmpty())
|
||||||
if (mask_vec.size() > 0)
|
|
||||||
{
|
{
|
||||||
for (auto mask : mask_vec)
|
const std::vector<std::unordered_map<std::string, cv::Mat>> &mask_vec =
|
||||||
MP_RETURN_IF_ERROR(WhitenTeeth(cc, &target_format, mask));
|
cc->Inputs().Tag(kMaskTag).Get<std::vector<std::unordered_map<std::string, cv::Mat>>>();
|
||||||
|
if (mask_vec.size() > 0)
|
||||||
|
{
|
||||||
|
for (auto mask : mask_vec)
|
||||||
|
MP_RETURN_IF_ERROR(WhitenTeeth(cc, &target_format, mask));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy the rendered image to output.
|
// Copy the rendered image to output.
|
||||||
uchar *image_mat_ptr = image_mat->data;
|
uchar *image_mat_ptr = image_mat->data;
|
||||||
MP_RETURN_IF_ERROR(RenderToCpu(cc, target_format, image_mat_ptr, image_mat));
|
MP_RETURN_IF_ERROR(RenderToCpu(cc, target_format, image_mat_ptr, image_mat));
|
||||||
|
|
|
@ -30,7 +30,6 @@ cc_library(
|
||||||
"//mediapipe/calculators/beauty:smooth_face_calculator",
|
"//mediapipe/calculators/beauty:smooth_face_calculator",
|
||||||
"//mediapipe/calculators/beauty:draw_lipstick_calculator",
|
"//mediapipe/calculators/beauty:draw_lipstick_calculator",
|
||||||
"//mediapipe/calculators/beauty:whiten_teeth_calculator",
|
"//mediapipe/calculators/beauty:whiten_teeth_calculator",
|
||||||
"//mediapipe/calculators/util:detections_to_render_data_calculator",
|
|
||||||
"//mediapipe/calculators/util:landmarks_to_render_data_calculator",
|
"//mediapipe/calculators/util:landmarks_to_render_data_calculator",
|
||||||
"//mediapipe/calculators/landmarks:landmarks_to_mask_calculator",
|
"//mediapipe/calculators/landmarks:landmarks_to_mask_calculator",
|
||||||
"//mediapipe/graphs/face_mesh/calculators:face_landmarks_to_render_data_calculator",
|
"//mediapipe/graphs/face_mesh/calculators:face_landmarks_to_render_data_calculator",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user