美文网首页
开源美颜滤镜库GPUImageCpp-支持iOS-Mac-And

开源美颜滤镜库GPUImageCpp-支持iOS-Mac-And

作者: devzhaoyou | 来源:发表于2023-09-26 17:59 被阅读0次

GPUImageCpp - Realtime video and image processing library

简介

GPUImageCpp是一个由C++11编写的高性能图像和视频处理库, 基于GPU, 内置美颜特效滤镜, 效果可以达到商用级别.
支持的平台包括iOS, Mac, Android, 理论上可以移植到所有支持OpenGL/ES的平台.

项目地址:

https://github.com/pixpark/gpuimage-cpp

效果

美白&磨皮

sample-1.jpg

架构

arch-zh.jpg

功能

美颜滤镜

  • 磨皮滤镜
  • 美白滤镜
  • 红润滤镜
  • 瘦脸滤镜
  • 大眼滤镜
  • 口红滤镜
  • 腮红滤镜

输入格式

  • YUV420P(I420)
  • RGBA
  • JPEG
  • PNG
  • NV12

输出格式

  • RGBA
  • YUV420P
  • NV12

基础滤镜

基础滤镜列表

其他滤镜

  • 图片水印
  • 贴纸特效
  • 文字水印
  • 风格滤镜

效果预览

系统要求

系统 iOS OSX Android Windows Linux
最低版本 10.0+ 10.13+ 5.0+ - -

性能

iPhone

- iPhone 6P iPhone 8 iPhone X iPhone 11 iPhone 14 pro
CPU - - - - -
耗时 -ms -ms -ms - -

Android

- Xiaomi 10 Huawei Meta30 Vivo SAMSUNG Google Pixel
CPU - - - - -
耗时 -ms -ms -ms - -

编译

iOS

打开 objc/GPUImageCpp.xcodeprojobjc/demo/PixDemo.xcodeproj Xcode工程, 选择对应平台编译.

Android

Android Studio 打开目录 ./android, 配置 NDK r21+

接口调用

参考./objc/demo./android demo
.h file

// video data input
std::shared_ptr<SourceRawDataInput> source_raw_input_;
// beauty filter
std::shared_ptr<FaceBeautyFilter> face_beauty_filter_;
// video data output 
std::shared_ptr<TargetRawDataOutput> target_raw_output_;

Create Filter, .c++ file

 GPUImageCpp::GPUImageCppContext::getInstance()->runSync([&] {
    // Create filter
    source_raw_input_ = SourceRawDataInput::create();
    target_raw_output_ = TargetRawDataOutput::create();
    // Face Beauty Filter
    face_beauty_filter_ = FaceBeautyFilter::create();
    
    // Add filter
    source_raw_input_->addTarget(face_beauty_filter_)->addTarget(target_raw_output_);
 }

输入图像数据 I420 or RGBA

// ...
// YUVI420
 source_raw_input_->uploadBytes(width,
                                height, 
                                bufferY,
                                strideY, 
                                bufferU, 
                                strideU,
                                bufferV, 
                                strideV);
// ...
// bytes: RGBA data
 source_raw_input_->uploadBytes(bytes,
                                width, 
                                height, 
                                stride);

输出数据回调

// I420 callback
target_raw_output_->setI420Callbck([=](const uint8_t *data, 
                                        int width, 
                                        int height, 
                                        int64_t ts) {
    size_t y_size = width * height;
    const uint8_t *uData = data + y_size;
    const uint8_t *vData = data + y_size + y_size / 4;
    // Do something you want
});

// RGBA callback->
target_raw_output_->setPixelsCallbck([=](const uint8_t *data, 
                                        int width, 
                                        int height, 
                                        int64_t ts) {
    size_t rgba_size = width * height*4;
    // Do something you want
});

// Output data callbck

相关文章

  • Android Camera 使用OpenGLES 渲染滤镜以及

    说到滤镜问题,市面上所有美颜类的相机都存在各式各样的滤镜。那么我们怎么实现滤镜呢?我们首先想到,是否有相关开源项目...

  • Android GPUImage实现多种图像滤镜效果

    前言 GPUImage 是iOS下一个开源的基于GPU的图像处理库,提供各种各样的图像处理滤镜,并且支持照相机和摄...

  • 美颜滤镜效果

    美颜滤镜效果 GPUImage的介绍 GPUImage 是一个开源的基于GPU的图片或视频的处理框架,其本身内置了...

  • 美颜滤镜

    GPUImage GPUImage:是一个基于OpenGL ES 2.0图像和视频处理的开源iOS框架,提供各种各...

  • 美颜滤镜

    我们的神术自拍美颜滤镜,除了在照相时候使用,我们对自我的认识也开了美颜滤镜。 许多事情放在别的地方,我们觉得好傻,...

  •  iOS 使用GPUImage实现滤镜效果

    GPUImage实现滤镜效果 GPUImage是一个开源的图像处理第三方库,提供了100多种滤镜效果来加工处理图片...

  • OpenGLES10-GPUlmage

    GPUlmage ●开源的基于GPU处理图片/视频一个框架!本身内置几百种常见滤镜效果!支持自定义滤镜(由开发者基...

  • GPUImage集成 -- .a文件合成

    GPUImage简介 是一个开源的图像处理库,提供了非常多的滤镜效果(128种滤镜效果),开发者可以方便的对图片进...

  • 【GPUImage美颜滤镜】

    GPUImage的介绍 GPUImage 是一个开源的基于GPU的图片或视频的处理框架,其本身内置了多达120多种...

  • 美颜滤镜效果

    GPUImage的介绍 GPUImage 是一个开源的基于GPU的图片或视频的处理框架,其本身内置了多达120多种...

网友评论

      本文标题:开源美颜滤镜库GPUImageCpp-支持iOS-Mac-And

      本文链接:https://www.haomeiwen.com/subject/usyhbdtx.html