Skip to content

Commit

Permalink
modified colorslidercalculator
Browse files Browse the repository at this point in the history
  • Loading branch information
sandipan1 committed Aug 27, 2019
1 parent 3fd8da6 commit e0e8f82
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 14 deletions.
42 changes: 33 additions & 9 deletions mediapipe/calculators/image/ColorSliderCalculator.cc
Expand Up @@ -30,39 +30,63 @@ class ColorSliderCalculator : public CalculatorBase {
~ColorSliderCalculator() override = default;
//ColorSliderCalculator() : initialized_(false){}

static ::mediapipe::Status GetContract (CalculatorContract *cc){
static ::mediapipe::Status GetContract(CalculatorContract* cc);

::mediapipe::Status Open(CalculatorContext* cc) override;
::mediapipe::Status Process(CalculatorContext* cc) override;
void make_array(int r,int g,int b,std::array<int,3>* out);
};

REGISTER_CALCULATOR(ColorSliderCalculator);

//static
::mediapipe::Status ColorSliderCalculator::GetContract (CalculatorContract *cc){

cc->Inputs().Index(0).Set<int>();
cc->Inputs().Index(1).Set<int>();
cc->Inputs().Index(2).Set<int>();

if (cc->Outputs().HasTag("RGB_OUT")){
cc->Outputs().Tag("RGB_OUT").Set<std::vector<int>>();
cc->Outputs().Tag("RGB_OUT").Set<std::array<int,3>>();

}

return ::mediapipe::OkStatus();

}

::mediapipe::Status Open(CalculatorContext* cc) override{
::mediapipe::Status ColorSliderCalculator::Open(CalculatorContext* cc) {
cc->SetOffset(TimestampDiff(0));
return ::mediapipe::OkStatus();
}

::mediapipe::Status Process(CalculatorContext* cc) override{
::mediapipe::Status ColorSliderCalculator::Process(CalculatorContext* cc) {
if (cc->Inputs().NumEntries() == 0) {
return tool::StatusStop();
}
int red_buffer = cc->Inputs().Index(0).Value().Get<int>();
int green_buffer = cc->Inputs().Index(1).Value().Get<int>();
int blue_buffer = cc->Inputs().Index(2).Value().Get<int>();
auto out = absl::make_unique<std::array<int,3>>();
make_array(red_buffer,green_buffer,blue_buffer, out.get());


// auto rgb = absl::make_unique<std::array<int, 3>>();
// const auto out = {red_buffer, green_buffer,blue_buffer};

const auto& rgb= {red_buffer, green_buffer,blue_buffer};
cc->Outputs().Tag("RGB_OUT").Add(&rgb, cc->InputTimestamp());
cc->Outputs().Tag("RGB_OUT").Add(out.release(), cc->InputTimestamp());

return ::mediapipe::OkStatus();
}
};
} //end namespace
REGISTER_CALCULATOR(::mediapipe::ColorSliderCalculator);




void ColorSliderCalculator::make_array(int r,int g,int b,std::array<int,3>* out){
(*out)[0] = r;
(*out)[1] =g;
(*out)[2] =b;
}

} //end namespace
// REGISTER_CALCULATOR(::mediapipe::ColorSliderCalculator);
8 changes: 3 additions & 5 deletions mediapipe/calculators/image/recolor_calculator.cc
Expand Up @@ -128,7 +128,7 @@ ::mediapipe::Status RecolorCalculator::GetContract(CalculatorContract* cc) {
cc->Inputs().Tag("MASK").Set<ImageFrame>();
}
if (cc->Inputs().HasTag("RGB_ARRAY")) {
cc->Inputs().Tag("RGB_ARRAY").Set<std::vector<int>>();
cc->Inputs().Tag("RGB_ARRAY").Set<std::array<int,3>>();
}

#if defined(__ANDROID__)
Expand Down Expand Up @@ -207,16 +207,14 @@ ::mediapipe::Status RecolorCalculator::RenderGpu(CalculatorContext* cc) {
const Packet& rgb_packet = cc->Inputs().Tag("RGB_ARRAY").Value();
const auto& input_buffer = input_packet.Get<mediapipe::GpuBuffer>();
const auto& mask_buffer = mask_packet.Get<mediapipe::GpuBuffer>();
const auto& rgb_buffer = rgb_packet.Get<std::vector<int>>();

const auto& rgb_buffer = rgb_packet.Get<std::array<int,3>>();
my_color.push_back(rgb_buffer[0] / 255.0);
my_color.push_back(rgb_buffer[1] / 255.0);
my_color.push_back(rgb_buffer[2] / 255.0);

auto img_tex = gpu_helper_.CreateSourceTexture(input_buffer);
auto mask_tex = gpu_helper_.CreateSourceTexture(mask_buffer);
auto dst_tex =
gpu_helper_.CreateDestinationTexture(img_tex.width(), img_tex.height());
auto dst_tex = gpu_helper_.CreateDestinationTexture(img_tex.width(), img_tex.height());

// Run recolor shader on GPU.
{
Expand Down

0 comments on commit e0e8f82

Please sign in to comment.