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