Skip to content

基础滤镜

基本概念

GPUPixel 采用滤镜链架构设计,视频或图像数据通过一系列滤镜流动以实现各种效果。主要组件包括:

  • Source:视频/图像数据的输入(例如 SourceRawData
  • Filters:应用效果的处理单元(例如 BeautyFaceFilterFaceReshapeFilter
  • Sink:输出目标(例如 SinkRawData

初始化

在使用 GPUPixel 之前,你需要初始化上下文并创建滤镜链:

cpp
// 初始化 GPUPixel 上下文并在其线程中运行操作
gpupixel::GPUPixelContext::getInstance()->runSync([&] {
    // 在这里创建你的滤镜并设置滤镜链
});

创建滤镜链

典型的滤镜链设置包括创建源、滤镜和目标,然后将它们链接在一起:

cpp
// 声明组件
std::shared_ptr<SourceRawData> source_raw_input_;
std::shared_ptr<BeautyFaceFilter> beauty_face_filter_;
std::shared_ptr<SinkRawData> target_raw_output_;

// 初始化并链接组件
gpupixel::GPUPixelContext::getInstance()->runSync([&] {
    // 创建源
    source_raw_input_ = SourceRawData::create();
    
    // 创建滤镜
    beauty_face_filter_ = BeautyFaceFilter::create();
    
    // 创建目标
    target_raw_output_ = SinkRawData::create();
    
    // 链接滤镜链
    source_raw_input_->addSink(beauty_face_filter_)
                     ->addSink(target_raw_output_);
});

清理

当你使用完 GPUPixel 后,应该清理资源:

cpp
// 清理 GPUPixel 资源
gpupixel::GPUPixelContext::getInstance()->runSync([&] {
    // 释放你的滤镜引用
    source_raw_input_.reset();
    beauty_face_filter_.reset();
    target_raw_output_.reset();
    // 其他滤镜...
});

基于 Apache-2.0 License 许可发布