Add BGR -> RGB color conversion to ColorConvertCalculator.
PiperOrigin-RevId: 496497002
This commit is contained in:
parent
ef3fa67bf4
commit
ea0bebc226
|
@ -38,6 +38,7 @@ void SetColorChannel(int channel, uint8 value, cv::Mat* mat) {
|
||||||
|
|
||||||
constexpr char kRgbaInTag[] = "RGBA_IN";
|
constexpr char kRgbaInTag[] = "RGBA_IN";
|
||||||
constexpr char kRgbInTag[] = "RGB_IN";
|
constexpr char kRgbInTag[] = "RGB_IN";
|
||||||
|
constexpr char kBgrInTag[] = "BGR_IN";
|
||||||
constexpr char kBgraInTag[] = "BGRA_IN";
|
constexpr char kBgraInTag[] = "BGRA_IN";
|
||||||
constexpr char kGrayInTag[] = "GRAY_IN";
|
constexpr char kGrayInTag[] = "GRAY_IN";
|
||||||
constexpr char kRgbaOutTag[] = "RGBA_OUT";
|
constexpr char kRgbaOutTag[] = "RGBA_OUT";
|
||||||
|
@ -57,6 +58,7 @@ constexpr char kGrayOutTag[] = "GRAY_OUT";
|
||||||
// RGB -> RGBA
|
// RGB -> RGBA
|
||||||
// RGBA -> BGRA
|
// RGBA -> BGRA
|
||||||
// BGRA -> RGBA
|
// BGRA -> RGBA
|
||||||
|
// BGR -> RGB
|
||||||
//
|
//
|
||||||
// This calculator only supports a single input stream and output stream at a
|
// This calculator only supports a single input stream and output stream at a
|
||||||
// time. If more than one input stream or output stream is present, the
|
// time. If more than one input stream or output stream is present, the
|
||||||
|
@ -69,6 +71,7 @@ constexpr char kGrayOutTag[] = "GRAY_OUT";
|
||||||
// RGB_IN: The input video stream (ImageFrame, SRGB).
|
// RGB_IN: The input video stream (ImageFrame, SRGB).
|
||||||
// BGRA_IN: The input video stream (ImageFrame, SBGRA).
|
// BGRA_IN: The input video stream (ImageFrame, SBGRA).
|
||||||
// GRAY_IN: The input video stream (ImageFrame, GRAY8).
|
// GRAY_IN: The input video stream (ImageFrame, GRAY8).
|
||||||
|
// BGR_IN: The input video stream (ImageFrame, SBGR).
|
||||||
//
|
//
|
||||||
// Output streams:
|
// Output streams:
|
||||||
// RGBA_OUT: The output video stream (ImageFrame, SRGBA).
|
// RGBA_OUT: The output video stream (ImageFrame, SRGBA).
|
||||||
|
@ -122,6 +125,10 @@ absl::Status ColorConvertCalculator::GetContract(CalculatorContract* cc) {
|
||||||
cc->Inputs().Tag(kBgraInTag).Set<ImageFrame>();
|
cc->Inputs().Tag(kBgraInTag).Set<ImageFrame>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cc->Inputs().HasTag(kBgrInTag)) {
|
||||||
|
cc->Inputs().Tag(kBgrInTag).Set<ImageFrame>();
|
||||||
|
}
|
||||||
|
|
||||||
if (cc->Outputs().HasTag(kRgbOutTag)) {
|
if (cc->Outputs().HasTag(kRgbOutTag)) {
|
||||||
cc->Outputs().Tag(kRgbOutTag).Set<ImageFrame>();
|
cc->Outputs().Tag(kRgbOutTag).Set<ImageFrame>();
|
||||||
}
|
}
|
||||||
|
@ -194,6 +201,11 @@ absl::Status ColorConvertCalculator::Process(CalculatorContext* cc) {
|
||||||
return ConvertAndOutput(kRgbaInTag, kBgraOutTag, ImageFormat::SBGRA,
|
return ConvertAndOutput(kRgbaInTag, kBgraOutTag, ImageFormat::SBGRA,
|
||||||
cv::COLOR_RGBA2BGRA, cc);
|
cv::COLOR_RGBA2BGRA, cc);
|
||||||
}
|
}
|
||||||
|
// BGR -> RGB
|
||||||
|
if (cc->Inputs().HasTag(kBgrInTag) && cc->Outputs().HasTag(kRgbOutTag)) {
|
||||||
|
return ConvertAndOutput(kBgrInTag, kRgbOutTag, ImageFormat::SRGB,
|
||||||
|
cv::COLOR_BGR2RGB, cc);
|
||||||
|
}
|
||||||
|
|
||||||
return mediapipe::InvalidArgumentErrorBuilder(MEDIAPIPE_LOC)
|
return mediapipe::InvalidArgumentErrorBuilder(MEDIAPIPE_LOC)
|
||||||
<< "Unsupported image format conversion.";
|
<< "Unsupported image format conversion.";
|
||||||
|
|
Loading…
Reference in New Issue
Block a user