[ImageTransformationCalculator]Add option to specify padding color
PiperOrigin-RevId: 510541473
This commit is contained in:
parent
37a825c98d
commit
68ba9a6ebf
|
@ -207,6 +207,7 @@ class ImageTransformationCalculator : public CalculatorBase {
|
|||
bool flip_vertically_ = false;
|
||||
|
||||
bool use_gpu_ = false;
|
||||
cv::Scalar padding_color_;
|
||||
#if !MEDIAPIPE_DISABLE_GPU
|
||||
GlCalculatorHelper gpu_helper_;
|
||||
std::unique_ptr<QuadRenderer> rgb_renderer_;
|
||||
|
@ -338,6 +339,9 @@ absl::Status ImageTransformationCalculator::Open(CalculatorContext* cc) {
|
|||
}
|
||||
|
||||
scale_mode_ = ParseScaleMode(options_.scale_mode(), DEFAULT_SCALE_MODE);
|
||||
padding_color_ = cv::Scalar(options_.padding_color().red(),
|
||||
options_.padding_color().green(),
|
||||
options_.padding_color().blue());
|
||||
|
||||
if (use_gpu_) {
|
||||
#if !MEDIAPIPE_DISABLE_GPU
|
||||
|
@ -480,7 +484,8 @@ absl::Status ImageTransformationCalculator::RenderCpu(CalculatorContext* cc) {
|
|||
cv::copyMakeBorder(intermediate_mat, scaled_mat, top, bottom, left,
|
||||
right,
|
||||
options_.constant_padding() ? cv::BORDER_CONSTANT
|
||||
: cv::BORDER_REPLICATE);
|
||||
: cv::BORDER_REPLICATE,
|
||||
padding_color_);
|
||||
} else {
|
||||
cv::resize(input_mat, scaled_mat, cv::Size(target_width, target_height),
|
||||
0, 0, scale_flag);
|
||||
|
|
|
@ -25,6 +25,13 @@ message ImageTransformationCalculatorOptions {
|
|||
optional ImageTransformationCalculatorOptions ext = 251952830;
|
||||
}
|
||||
|
||||
// RGB values in range of 0 - 255
|
||||
message Color {
|
||||
optional int32 red = 1 [default = 0];
|
||||
optional int32 green = 2 [default = 0];
|
||||
optional int32 blue = 3 [default = 0];
|
||||
}
|
||||
|
||||
// Output dimensions. Set to 0 if they should be the same as the input.
|
||||
optional int32 output_width = 1 [default = 0];
|
||||
optional int32 output_height = 2 [default = 0];
|
||||
|
@ -40,4 +47,8 @@ message ImageTransformationCalculatorOptions {
|
|||
// Default is to use BORDER_CONSTANT. If set to false, it will use
|
||||
// BORDER_REPLICATE instead.
|
||||
optional bool constant_padding = 7 [default = true];
|
||||
|
||||
// The color for the padding. This option is only used when the scale mode is
|
||||
// FIT. Default is black. This is for CPU only.
|
||||
optional Color padding_color = 8;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user