Skip to content

Beauty Effects

Advanced Filter Chain Example

For more complex effects, you can create multiple filters and chain them together:

cpp
   // Create source
   gpuPixelRawInput = SourceRawData::Create();
   
   // Create sink
   target_raw_output_ = SinkRawData::Create();
   
   // Create filters
   lipstick_filter_ = LipstickFilter::Create();
   blusher_filter_ = BlusherFilter::Create();
   face_reshape_filter_ = FaceReshapeFilter::Create();
   beauty_face_filter_ = BeautyFaceFilter::Create();
   
   // Register face landmark callback for filters that need facial features
   gpuPixelRawInput->RegLandmarkCallback([=](std::vector<float> landmarks) {
      lipstick_filter_->SetFaceLandmarks(landmarks);
      blusher_filter_->SetFaceLandmarks(landmarks);
      face_reshape_filter_->SetFaceLandmarks(landmarks);
   });
   
   // Link the filter chain
   gpuPixelRawInput->AddSink(lipstick_filter_)
                  ->AddSink(blusher_filter_)
                  ->AddSink(face_reshape_filter_)
                  ->AddSink(beauty_face_filter_)
                  ->AddSink(target_raw_output_);

Adjusting Filter Parameters

Each filter has specific parameters that can be adjusted:

Beauty Face Filter

cpp
// Set smoothing level (0.0-1.0)
beauty_face_filter_->SetBlurAlpha(value/10);

// Set whitening level (0.0-1.0)
beauty_face_filter_->SetWhite(value/20);

Face Reshape Filter

cpp
// Set face slimming level (0.0-1.0)
face_reshape_filter_->SetFaceSlimLevel(value/100);

// Set eye enlargement level (0.0-1.0)
face_reshape_filter_->SetEyeZoomLevel(value/50);

Makeup Filters

cpp
// Set lipstick intensity (0.0-1.0)
lipstick_filter_->SetBlendLevel(value/10);

// Set blusher intensity (0.0-1.0)
blusher_filter_->SetBlendLevel(value/10);

Released under the Apache-2.0 License.