Skip to content

美颜特效

高级滤镜链示例

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

cpp
gpupixel::GPUPixelContext::getInstance()->runSync([&] {
    // 创建源
    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 许可发布