2 Star 4 Fork 1

虹图AI开放平台/HTEffect_AndroidX_Android

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
Loading...
README

简体中文 | English | 日本語

虹图人像人体 SDK


简介

  • 提供面部精致的美颜美型美妆和发色变换效果
  • 提供不少于60款风格滤镜、画面炫彩变幻效果的特效滤镜、人脸变形的趣味哈哈镜
  • 精致的2D动态贴纸、3D道具、面具、及丰富的全屏3D礼物特效功能
  • 可拖拽水印贴纸:支持用户上传,拖拽、缩放、旋转等
  • 多种手势识别,并触发特效
  • 支持AI背景分割和多种幕布颜色的绿幕抠图功能

特色

  • 【特效更丰富】:多种AR特效全覆盖,特效类型丰富多样,满足用户多样需求
  • 【对接更便捷】:开箱即用型UI可直接对C端使用,对接快且体验好,三行代码快速实现对接
  • 【资源支持自设计】:所有素材都支持平台自设计和自定义,打造和平台定位一致的AR素材特效
  • 【性能更极致】:行业领先的 AI 算法能力,946人脸关键点让五官定位更精准,人脸表情情绪捕捉更高效、更稳定、更准确
  • 【平台化服务更自主】:用户自行注册、登录虹图AI开放平台即可获得人像人体SDK能力,实时对应用状态和信息具备更自由、精准的把控

效果展示

  • 通过人脸美颜美型、贴纸道具、手势特效到人像背景分割等AR特效,为用户提供围绕人像人体丰富多样的AI+AR技术




快速集成

iOS

1. 前提条件

2. 安装

您可以选择使用 CocoaPods 自动加载的方式,或者先下载 SDK,再将其导入到您当前的工程项目中

CocoaPods

  • 编辑Podfile文件
pod 'HTEffect'
  • 安装
pod install

手动集成

  • 将下载好的 HTEffect.framework 库文件和 HTEffect.bundle 资源包放到您的项目文件夹下
  • 在 Xcode > General 中添加动态库,确保 Embed 属性设置为 Embed&Sign
  • 在 Xcode > Build Settings 中搜索 bitcode ,将 Enable Bitcode 设置为 No
  • 在 Xcode > Info 中添加 App Transport Security Settings > Allow Arbitrary Loads 并设置为 YES

3. 引用

  • 在项目需要使用 SDK API 的文件里,添加模块引用
#import <HTEffect/HTEffectInterface.h>
  • (可选) HTUI 可根据项目需求选用,将 HTUI 文件夹添加到您的项目文件夹中,在项目需要使用的文件里,添加引用
#import "HTUIManager.h"

4. 使用

初始化

  • 在您的 App 调用 HTEffect 的相关功能之前(建议在 [AppDelegate application:didFinishLaunchingWithOptions:] 中)进行如下设置
/**
 * 在线鉴权初始化方法
 */
[[HTEffect shareInstance] initHTEffect:@"YOUR_APPID" withDelegate:self];

/**
 * 离线鉴权初始化方法
 */
// [[HTEffect shareInstance] initHTEffect:@"YOUR_LICENSE"];
  • (可选) 如果需要使用 HTUI,您可以在 viewDidLoad 中添加以下方法
[[HTUIManager shareManager] loadToWindowDelegate:self];
[self.view addSubview:[HTUIManager shareManager].defaultButton];

渲染

  • 视频帧:定义一个 BOOL 变量 isRenderInit ,用来标志渲染器的初始化状态,根据获取到的视频格式,采用对应的方法进行渲染
/**
 * 视频帧
 */
CVPixelBufferLockBaseAddress(pixelBuffer, 0);
unsigned char *buffer = (unsigned char *) CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 0);

if (!_isRenderInit) {
    [[HTEffect shareInstance] releaseBufferRenderer];
    _isRenderInit = [[HTEffect shareInstance] initBufferRenderer:format width:width height:height rotation:rotation isMirror:isMirror maxFaces:maxFaces];
}
[[HTEffect shareInstance] processBuffer:buffer];

CVPixelBufferUnlockBaseAddress(pixelBuffer, 0);

/**
 * 纹理
 */
// if (!_isRenderInit) {
//     [[HTEffect shareInstance] releaseTextureRenderer];
//     _isRenderInit = [[HTEffect shareInstance] initTextureRenderer:width height:height rotation:rotation isMirror:isMirror maxFaces:maxFaces];
// }
// [[HTEffect shareInstance] processTexture:textureId];
  • 图片
/**
 * byte[]
 */
if (!_isRenderInit) {
    [[HTEffect shareInstance] releaseImageRenderer];
    _isRenderInit = [[HTEffect shareInstance] initImageRenderer:format width:width height:height rotation:rotation isMirror:isMirror maxFaces:maxFaces];
}
[[HTEffect shareInstance] processImage:pixels];

/**
 * UIImage
 */
// UIImage *resultImage = [[HTEffect shareInstance] processUIImage:image];

销毁

  • 结束渲染时,需根据对应格式,调用对应的释放方法,通常写在 dealloc 方法里
// 销毁视频帧渲染资源
/**
 * texture
 */
[[HTEffect shareInstance] releaseTextureRenderer];

/**
 * buffer
 */
// [[HTEffect shareInstance] releaseBufferRenderer];

// 销毁图片渲染资源
/**
 * byte[]
 */
// [[HTEffect shareInstance] releaseImageRenderer];

/**
 * UIImage
 */
// [[HTEffect shareInstance] releaseUIImageRenderer];

Android

1. 导入工程

  • HTEffect.aar 文件拷贝到 app 模块中的 libs 文件夹下,并在 app 模块的 build.gradle 文件的 dependencies 中,增加如下依赖
dependencies {
 implementation files('libs/HTEffect.aar')
}
  • 将 jniLibs 文件夹中,各个 ABI 对应的 libHTEffect.so 文件,拷贝到对应目录中
  • 将 assets 资源文件拷贝到项目的对应目录中

2. 使用 HTUI (可选)

  • 依赖我们的 htui 工程,使用我们提供的开源 UI 库,将 htui 文件夹拷贝到工程根目录下,在工程根目录的 settings.gradle 文件中,增加如下代码
include(":htui")
  • 在 app 模块中的 build.gradle 文件的 dependencies 中,增加如下代码
implementation project(':htui')

3. 集成开发

初始化

  • HTEffect 初始化函数程序中调用一次即可生效,建议您在 Application 创建的时候调用;如果渲染功能使用不频繁,也可以在使用的时候调用,接口如下
// 在线鉴权初始化方法
HTEffect.shareInstance().initHTEffect(context, "YOUR_APPID", new InitCallback() {
        @Override public void onInitSuccess() {}
        @Override public void onInitFailure() {}
});
// 离线鉴权初始化方法
//HTEffect.shareInstance().initHTEffect(context,"YOUR_LICENSE");

添加 HTUI (可选)

  • 设置使用 htui 的 Activity 继承或间接继承 FragmentActivity,例如
public class CameraActivity extends FragmentActivity {
    //...
}
  • 如果需要使用 htui,请调用 addcontentView 实现UI的添加,代码如下
addContentView(
    new HTPanelLayout(this).init(getSupportFragmentManager()),
    new FrameLayout.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT,
        ViewGroup.LayoutParams.MATCH_PARENT)
);

渲染

  • 视频帧:定义布尔变量 isRenderInit ,用来标志渲染方法是否初始化完成,然后根据得到的视频帧格式的不同,使用对应的方法进行渲染
/**
 * GL_TEXTURE_EXTERNAL_OES 纹理格式
 */
if (!isRenderInit) {
    isRenderInit = HTEffect.shareInstance().initTextureOESRenderer(width, height, rotation, isMirror, maxFaces);
}
int textureId = HTEffect.shareInstance().processTextureOES(textureOES);

/**
 * GL_TEXTURE_2D 纹理格式
 */
if (!isRenderInit) {
    isRenderInit = HTEffect.shareInstance().initTextureRenderer(width, height, rotation, isMirror, maxFaces);
}
int textureId = HTEffect.shareInstance().processTexture(texture2D);

/**
 * byte[] 视频帧
 */
if (!isRenderInit) {
    isRenderInit = HTEffect.shareInstance().initBufferRenderer(format,width, height, rotation, isMirror, maxFaces);
}
HTEffect.shareInstance().processBuffer(buffer);
  • 图片:
/**
 * byte[] 图片类型
 */
if (!isRenderInit) {
    isRenderInit = HTEffect.shareInstance().initImageRenderer(format,width, height,rotation,isMirror,maxFaces);
}
    HTEffect.shareInstance().processImage(buffer);

/**
 * Bitmap 图片类型
 */
Bitmap newBitmap = HTEffect.shareInstance().processBitmap(bitmap);

销毁

  • 结束渲染时,为防止内存泄漏的发生,需根据视频帧格式的不同,调用对应的 destroy 方法释放掉资源,调用位置通常在 视频帧回调接口 的销毁处,或者是 Activity , Fragment 的生命周期结束处,同时将定义的布尔变量 isRenderInit 置为 false
/**
 * 使用其中一个
 */
HTEffect.shareInstance().releaseTextureOESRenderer();
HTEffect.shareInstance().releaseTextureRenderer();
HTEffect.shareInstance().releaseBufferRenderer();

/*
 * 将 bool 置为 false
 */
isRenderInit = false;

/**
 * 销毁图片渲染资源,图片为byte[]类型
 */
HTEffect.shareInstance().releaseImageRenderer();

/**
 * 销毁图片渲染资源,图片为Bitmap类型
 */
HTEffect.shareInstance().releaseBitmapRenderer();



示例代码

Demo下载



最近更新

  • 2024.01.29: v3.2.0

    • 增加单张图片渲染处理接口
    • 人脸的检测、关键点、追踪性能提升
    • 简化算法模型文件结构
    • 实现RGB、BGR的格式支持
    • 完整实现透明背景图渲染开关接口
    • 完善算法模型文件相关日志系统、容错机制、向下兼容逻辑
  • 2023.12.28: v3.1.0

    • 优化手势特效底层算法
    • 增加对部分透明图片的渲染支持
    • 完善日志系统的输出打印
    • 解决了一些已知问题
  • 2023.11.30: v3.0.2

    • 优化磨皮、清晰算法
    • 解决了一些已知问题
  • 2023.11.23: v3.0.1

    • 提升美妆贴合度
    • 优化美妆眼线拉伸问题
  • 2023.11.20: v3.0.0

    • 绿幕抠图增加背景图片本地上传功能
    • 美妆、妆容推荐等效果提升
    • 美发、人像抠图、手势识别、绿幕抠图等底层算法优化
    • 解决了一些已知问题
  • 2023.09.27: v3.0.0-beta

    • 新增美妆功能,包含眉毛、腮红、眼影、眼线、睫毛、口红、美瞳等美妆特效
    • 新增妆容推荐功能,包含狐系美人、纯欲妆、女团妆等多种热门妆效
    • 新增美体功能,包含长腿、瘦身两种特效
    • 优化了美发算法,效果更加稳定支持CPU/GPU
    • 优化了人像分割算法,边缘更加自然稳定
    • 优化了手势识别算法,支持跟手移动效果
  • 2023.07.18: v2.2.0

    • 新增4个面具素材
    • 解决了一些已知问题
  • 2023.06.09: v2.1.0

    • 新增16种高级滤镜
  • 2023.06.07: v2.0.2

    • 修复部分机型闪烁的问题
    • 优化资源内存空间处理
  • 2023.06.01: v2.0.1

    • 修复绿幕默认值问题
  • 2023.05.17: 全新2.0版本

    • 新增30多种风格滤镜、特效滤镜、哈哈镜
    • 新增美发、面具、礼物及自定义可拖拽水印
    • 绿幕抠图新增蓝、白两种幕布颜色和参数调节
    • 优化了手势特效和人像分割特效效果
  • 更多



联系与反馈

虹图AI开放平台是基于虹图自研的AI能力,打造的围绕音视频等应用场景的AI技术开放平台。提供人像人体特效、人体行为分析、内容审核、人脸实名认证、图像特效等视觉AI技术,加速AI为中小企业业务赋能。自成立至2022年底,虹图已经累计赋能直播、社交、教育、游戏电竞、IoT、XR、元宇宙等10余个行业赛道,服务平台近1500家,终端使用数量超过1.2亿台。

虹图探索了AI结合场景和生态的方法,围绕“AI产品+场景+生态合作“的方案模式,以音视频应用为切入场景,打造服务音视频应用全生命周期的AI产品矩阵,加以组合生态合作伙伴产品,实现平台的“开放”意义,为用户的业务需求提供整体解决方案,与用户实现价值共生。

1. 官网地址: www.texeljoy.com

2. 商务合作: 400-178-9918

3. 邮箱地址: business@texeljoy.com

4. 公众号:

空文件

简介

虹图人像人体SDK中包含UI的模块,该仓库为AndroidX版本 展开 收起
取消

发行版

暂无发行版

贡献者 (4)

全部

语言

近期动态

7个月前推送了新的 3.5.2 标签
7个月前推送了新的提交到 master 分支,a90d465...261f181
7个月前推送了新的 3.5.1 标签
7个月前推送了新的提交到 master 分支,b83b9e2...a90d465
7个月前被 虹图AI开放平台 移出了仓库
加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/htai-open/HTEffect_AndroidX_Android.git
git@gitee.com:htai-open/HTEffect_AndroidX_Android.git
htai-open
HTEffect_AndroidX_Android
HTEffect_AndroidX_Android
51387a65e6ad7efeac9e6278e5a02b513b10d322

搜索帮助