Skip to content

美颜特效

高级滤镜链示例

对于更复杂的效果,你可以创建多个滤镜并将它们链接在一起:

cpp
   // 创建源
   gpuPixelRawInput = SourceRawData::Create();

   // 创建目标
   target_raw_output_ = SinkRawData::Create();

   // 创建滤镜
   lipstick_filter_ = LipstickFilter::Create();
   blusher_filter_ = BlusherFilter::Create();
   face_reshape_filter_ = FaceReshapeFilter::Create();
   beauty_face_filter_ = BeautyFaceFilter::Create();

   // 为需要面部特征的滤镜注册人脸关键点回调
   gpuPixelRawInput->RegLandmarkCallback([=](std::vector<float> landmarks) {
      lipstick_filter_->SetFaceLandmarks(landmarks);
      blusher_filter_->SetFaceLandmarks(landmarks);
      face_reshape_filter_->SetFaceLandmarks(landmarks);
   });

   // 链接滤镜链
   gpuPixelRawInput->AddSink(lipstick_filter_)
                  ->AddSink(blusher_filter_)
                  ->AddSink(face_reshape_filter_)
                  ->AddSink(beauty_face_filter_)
                  ->AddSink(target_raw_output_);

调整滤镜参数

每个滤镜都有可以调整的特定参数:

美颜滤镜

cpp
// 设置磨皮程度 (0.0-1.0)
beauty_face_filter_->SetBlurAlpha(value/10);

// 设置美白程度 (0.0-1.0)
beauty_face_filter_->SetWhite(value/20);

美型滤镜

cpp
// 设置瘦脸程度 (0.0-1.0)
face_reshape_filter_->SetFaceSlimLevel(value/100);

// 设置大眼程度 (0.0-1.0)
face_reshape_filter_->SetEyeZoomLevel(value/50);

美妆滤镜

cpp
// 设置口红浓度 (0.0-1.0)
lipstick_filter_->SetBlendLevel(value/10);

// 设置腮红浓度 (0.0-1.0)
blusher_filter_->SetBlendLevel(value/10);

基于 Apache-2.0 License 许可发布