# HTEffect_Demo_PC **Repository Path**: texeljoy_0/hteffect_demo_pc ## Basic Information - **Project Name**: HTEffect_Demo_PC - **Description**: 虹图人像人体特效PC(Windows)端集成示例Demo - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-27 - **Last Updated**: 2024-06-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: 人像人体特效, Windows, ar ## README 简体中文 | [English](README_EN.md) | [日本語](README_JP.md) # **虹图人像人体 SDK**
## **简介** - 提供面部精致的美颜美型美妆和发色变换效果 - 提供不少于60款风格滤镜、画面炫彩变幻效果的特效滤镜、人脸变形的趣味哈哈镜 - 精致的2D动态贴纸、3D道具、面具、及丰富的全屏3D礼物特效功能 - 可拖拽水印贴纸:支持用户上传,拖拽、缩放、旋转等 - 多种手势识别,并触发特效 - 支持AI背景分割和多种幕布颜色的绿幕抠图功能
### **特色** - 【特效更丰富】:多种AR特效全覆盖,特效类型丰富多样,满足用户多样需求 - 【对接更便捷】:开箱即用型UI可直接对C端使用,对接快且体验好,三行代码快速实现对接 - 【资源支持自设计】:所有素材都支持平台自设计和自定义,打造和平台定位一致的AR素材特效 - 【性能更极致】:行业领先的 AI 算法能力,946人脸关键点让五官定位更精准,人脸表情情绪捕捉更高效、更稳定、更准确 - 【平台化服务更自主】:用户自行注册、登录虹图AI开放平台即可获得人像人体SDK能力,实时对应用状态和信息具备更自由、精准的把控
### **效果展示** - 通过人脸美颜美型、贴纸道具、手势特效到人像背景分割等AR特效,为用户提供围绕人像人体丰富多样的AI+AR技术 ![](https://hteffect-resource.oss-cn-shanghai.aliyuncs.com/gitee_resource/hteffect.png)

---- ## **快速集成** ### **iOS** #### **1. 前提条件** - Xcode 13.0+ - iOS 11.0 以上的 iPhone 真机 - APP ID,由[虹图AI开放平台](https://console.texeljoy.com/login)控制台获取 #### **2. 安装** 您可以选择使用 CocoaPods 自动加载的方式,或者先下载 SDK,再将其导入到您当前的工程项目中 **CocoaPods** - 编辑Podfile文件 ```shell pod 'HTEffect' ``` - 安装 ```shell 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 的文件里,添加模块引用 ```objective-c #import ``` - (可选) HTUI 可根据项目需求选用,将 HTUI 文件夹添加到您的项目文件夹中,在项目需要使用的文件里,添加引用 ```objective-c #import "HTUIManager.h" ``` #### **4. 使用** **初始化** - 在您的 App 调用 HTEffect 的相关功能之前(建议在 [AppDelegate application:didFinishLaunchingWithOptions:] 中)进行如下设置 ```objective-c /** * 在线鉴权初始化方法 */ [[HTEffect shareInstance] initHTEffect:@"YOUR_APP_ID" withDelegate:self]; /** * 离线鉴权初始化方法 */ // [[HTEffect shareInstance] initHTEffect:@"YOUR_APP_ID"]; ``` - (可选) 如果需要使用 HTUI,您可以在 viewDidLoad 中添加以下方法 ```objective-c [[HTUIManager shareManager] loadToWindowDelegate:self]; [self.view addSubview:[HTUIManager shareManager].defaultButton]; ``` **渲染** - 定义一个 BOOL 变量 **isRenderInit** ,用来标志渲染器的初始化状态,根据获取到的视频格式,采用对应的方法进行渲染 ```objective-c /** * 视频帧 */ 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]; ``` **销毁** - 结束渲染时,需根据视频格式,调用对应的释放方法,通常写在 dealloc 方法里 ```objective-c /** * 销毁纹理渲染资源 */ [[HTEffect shareInstance] releaseTextureRenderer]; /** * 销毁buffer渲染资源 */ // [[HTEffect shareInstance] releaseBufferRenderer]; ```
### **Android** #### **1. 导入工程** - 将 **HTEffect.aar** 文件拷贝到 app 模块中的 libs 文件夹下,并在 app 模块的 build.gradle 文件的 dependencies 中,增加如下依赖 ```shell dependencies { implementation files('libs/HTEffect.aar') } ``` - 将 jniLibs 文件夹中,各个 ABI 对应的 **libHTEffect.so** 文件,拷贝到对应目录中 - 将 assets 资源文件拷贝到项目的对应目录中 #### **2. 使用 HTUI (可选)** - 依赖我们的 htui 工程,使用我们提供的开源 UI 库,将 htui 文件夹拷贝到工程根目录下,在工程根目录的 settings.gradle 文件中,增加如下代码 ```java include(":htui") ``` - 在 app 模块中的 build.gradle 文件的 dependencies 中,增加如下代码 ```shell implementation project(':htui') ``` #### **3. 集成开发** **初始化** - HTEffect 初始化函数程序中调用一次即可生效,建议您在 Application 创建的时候调用;如果渲染功能使用不频繁,也可以在使用的时候调用,接口如下 ```java // 在线鉴权初始化方法 HTEffect.shareInstance().initHTEffect(context, "YOUR_APP_ID", new InitCallback() { @Override public void onInitSuccess() {} @Override public void onInitFailure() {} }); // 离线鉴权初始化方法 //HTEffect.shareInstance().initHTEffect(context,"YOUR_APP_ID"); ``` **添加 HTUI (可选)** - 设置使用 htui 的 Activity 继承或间接继承 FragmentActivity,例如 ```java public class CameraActivity extends FragmentActivity { //... } ``` - 如果需要使用 htui,请调用 addcontentView 实现UI的添加,代码如下 ```java addContentView( new HTPanelLayout(this).init(getSupportFragmentManager()), new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) ); ``` **渲染** - 定义布尔变量 **isRenderInit** ,用来标志渲染方法是否初始化完成,然后根据得到的视频帧格式的不同,使用对应的方法进行渲染 ```java /** * 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); ``` **销毁** - 结束渲染时,为防止内存泄漏的发生,需根据视频帧格式的不同,调用对应的 destroy 方法释放掉资源,调用位置通常在 视频帧回调接口 的销毁处,或者是 Activity , Fragment 的生命周期结束处,同时将定义的布尔变量 **isRenderInit** 置为 false ```java /** * 使用其中一个 */ HTEffect.shareInstance().releaseTextureOESRenderer(); HTEffect.shareInstance().releaseTextureRenderer(); HTEffect.shareInstance().releaseBufferRenderer(); /* * 将 bool 置为 false */ isRenderInit = false; ```
### **Windows** #### **1. 前提条件** - 建议使用VS2019及以上版本 - license、HTEffectBundle、ThirdParty,请联系商务获取 #### **2. 安装** **示例Demo** - **HTEffectDemo** 相关文件分别放在ThirdParty和HTEffectBundle文件夹中 - **目标文件名**需更改为和商务备案的名称 **文件组成** - **HTEffectBundle** 资源包 - **HTEffectSDK** - include - lib - win64 - HTEffect.lib - HTEffect.dll - ncnn.dll - TNN.dll - MNN.dll - glad.c OpenGL文件依赖文件 - gl3w.c OpenGL文件依赖文件 **其它** - opencv #### **3. 接口** - 接口说明,也可以参考头文件 ```c++ /** * 美肤类型枚举 */ enum HTE_W_BeautyTypes { HTE_W_BeautySkinWhitening = 0, //!< 美白,0~100,0为无效果 HTE_W_BeautyClearSmoothing = 1, //!< 精细磨皮,0~100,0为无效果 HTE_W_BeautySkinRosiness = 2, //!< 红润,0~100,0为无效果 HTE_W_BeautyImageSharpness = 3, //!< 清晰,0~100,0为无效果 HTE_W_BeautyImageBrightness = 4, //!< 亮度,-50~50,0为无效果 HTE_W_BeautyDarkCircleLessening = 5, //!< 去黑眼圈,0~100,0为无效果 HTE_W_BeautyNasolabialLessening = 6 //!< 去法令纹,0~100,0为无效果 }; /** * 美型类型枚举 */ enum HTE_W_ReshapeTypes { //! 眼睛 HTE_W_HTReshapeEyeEnlarging = 10, //!< 大眼,0-100,0为无效果 HTE_W_ReshapeEyeRounding = 11, //!< 圆眼,0-100,0为无效果 HTE_W_ReshapeEyeSpaceTrimming = 12, //!< 眼间距,-50-50, 0为无效果 HTE_W_ReshapeEyeCornerTrimming = 13, //!< 眼睛角度,-50-50, 0为无效果 HTE_W_ReshapeEyeCornerEnlarging = 14, //!< 开眼角,0-100, 0为无效果 //! 脸廓 HTE_W_ReshapeCheekThinning = 20, //!< 瘦脸,0-100,0为无效果 HTE_W_ReshapeCheekVShaping = 21, //!< V脸,0-100,0为无效果 HTE_W_ReshapeCheekNarrowing = 22, //!< 窄脸,0-100,0为无效果 HTE_W_ReshapeCheekboneThinning = 23, //!< 瘦颧骨,0-100,0为无效果 HTE_W_ReshapeJawboneThinning = 24, //!< 瘦下颌骨,0-100,0为无效果 HTE_W_ReshapeTempleEnlarging = 25, //!< 丰太阳穴,0-100,0为无效果 HTE_W_ReshapeHeadLessening = 26, //!< 小头,0-100,0为无效果 HTE_W_ReshapeFaceLessening = 27, //!< 小脸,0-100,0为无效果 HTE_W_ReshapeCheekShortening = 28, //!< 短脸,0-100,0为无效果 //! 鼻部 HTE_W_ReshapeNoseEnlarging = 30, //!< 长鼻 HTE_W_ReshapeNoseThinning = 31, //!< 瘦鼻,0-100,0为无效果 HTE_W_ReshapeNoseApexLessening = 32, //!< 鼻头,0-100,0为无效果 HTE_W_ReshapeNoseRootEnlarging = 33, //!< 山根,0-100,0为无效果 //! 嘴部 HTE_W_ReshapeMouthTrimming = 40, //!< 嘴型,-50-50, 0为无效果 HTE_W_ReshapeMouthSmiling = 41, //!< 微笑嘴角,0-100,0为无效果 //! 其它 HTE_W_ReshapeChinTrimming = 0, //!< 下巴,-50-50, 0为无效果 HTE_W_ReshapeForeheadTrimming = 1, //!< 发际线,-50-50, 0为无效果 HTE_W_ReshapePhiltrumTrimming = 2 //!< 缩人中,-50-50, 0为无效果 }; /** * 美发类型枚举 */ enum HTE_W_HairTypes { HTE_W_HairTypeNone = 0, //!< 无美发效果 HTE_W_HairType1 = 1, //!< 美发类型1,HTEffect UI显示名称为"神秘紫" HTE_W_HairType2 = 2, //!< 美发类型2,HTEffect UI显示名称为"巧克力" HTE_W_HairType3 = 3, //!< 美发类型3,HTEffect UI显示名称为"青木棕" HTE_W_HairType4 = 4, //!< 美发类型4,HTEffect UI显示名称为"焦糖棕" HTE_W_HairType5 = 5, //!< 美发类型5,HTEffect UI显示名称为"落日橘" HTE_W_HairType6 = 6, //!< 美发类型6,HTEffect UI显示名称为"复古玫瑰" HTE_W_HairType7 = 7, //!< 美发类型7,HTEffect UI显示名称为"深玫瑰" HTE_W_HairType8 = 8, //!< 美发类型8,HTEffect UI显示名称为"雾霾香芋" HTE_W_HairType9 = 9, //!< 美发类型9,HTEffect UI显示名称为"孔雀蓝" HTE_W_HairType10 = 10, //!< 美发类型10,HTEffect UI显示名称为"雾霾蓝灰" HTE_W_HairType11 = 11, //!< 美发类型11,HTEffect UI显示名称为"亚麻灰棕" HTE_W_HairType12 = 12 //!< 美发类型12,HTEffect UI显示名称为"亚麻浅灰" }; /** * 滤镜类型枚举 * * 滤镜类型分为风格滤镜,特效滤镜,哈哈镜 */ enum HTE_W_FilterTypes { HTE_W_FilterBeauty = 0, //!< 风格滤镜 HTE_W_FilterEffect = 1, //!< 特效滤镜 HTE_W_FilterFunny = 2 //!< 哈哈镜 }; /** * AR道具类型枚举 * * AR道具类型目前支持2D贴纸,面具,礼物,水印 */ enum HTE_W_ARItemTypes { HTE_W_ItemSticker = 0, //!< 2D贴纸 HTE_W_ItemMask = 1, //!< 面具 HTE_W_ItemGift = 2, //!< 礼物 HTE_W_ItemWatermark = 3 //!< 水印 }; /** * 推荐妆容推荐类型枚举 * 3.0版本后,将风格推荐效果改为妆容推荐; * * 在调用妆容推荐设置接口时,设置类型 */ enum HTE_W_StyleTypes { HTE_W_StyleTypeNone = 0, //!< 无,HTEffect UI显示名称为"无" HTE_W_StyleTypeOne = 1, //!< 妆容一,HTEffect UI显示名称为"清纯白花" HTE_W_StyleTypeTwo = 2, //!< 妆容二,HTEffect UI显示名称为"狐系美人" HTE_W_StyleTypeThree = 3, //!< 妆容三,HTEffect UI显示名称为"清甜妆" HTE_W_StyleTypeFour = 4, //!< 妆容四,HTEffect UI显示名称为"白露" HTE_W_StyleTypeFive = 5, //!< 妆容五,HTEffect UI显示名称为"冷调" HTE_W_StyleTypeSix = 6, //!< 妆容六,HTEffect UI显示名称为"元气少女" HTE_W_StyleTypeSeven = 7, //!< 妆容七,HTEffect UI显示名称为"女团" HTE_W_StyleTypeEight = 8 //!< 妆容八,HTEffect UI显示名称为"纯欲妆" }; /** * 美妆类型枚举 * * 美妆类型分为口红、眉毛,腮红、眼影、眼线、睫毛、美瞳 */ enum HTE_W_MakeupTypes { HTE_W_MakeupLipstick = 0, //!< 口红 HTE_W_MakeupEyebrow = 1, //!< 眉毛 HTE_W_MakeupBlush = 2, //!< 腮红 HTE_W_MakeupEyeshadow = 3, //!< 眼影 HTE_W_MakeupEyeline = 4, //!< 眼线 HTE_W_MakeupEyelash = 5, //!< 睫毛 HTE_W_MakeupPupils = 6 //!< 美瞳 }; /** * 美体类型枚举 * * 美体类型分为长腿、瘦身 */ enum HTE_W_BodyBeautyTypes { HTE_W_BodyBeautyLegSlimming = 0, //!< 长腿 HTE_W_BodyBeautyBodyThinning = 1 //!< 瘦身 }; /** * 视频帧格式 * * 支持对RGB、RGBA、BGR、BGRA、NV12、NV21、I420格式的视频帧进行渲染 */ enum HTE_W_FormatEnum { HTE_W_FormatRGB = 0, //!< RGB HTE_W_FormatRGBA = 1, //!< RGBA HTE_W_FormatBGR = 2, //!< BGR HTE_W_FormatBGRA = 3, //!< BGRA HTE_W_FormatNV12 = 4, //!< NV12 HTE_W_FormatNV21 = 5, //!< NV21 HTE_W_FormatI420 = 6 //!< I420 }; /** * 视频帧朝向 * */ enum HTE_W_RotationEnum { HTE_W_RotationClockwise0 = 0, HTE_W_RotationClockwise90 = 90, HTE_W_RotationClockwise180 = 180, HTE_W_RotationClockwise270 = 270 }; /** * authorizeSDK 鉴权接口,用于初始化SDK * * @param license 证书文本 * @param resDir 资源路径 * * @return 鉴权返回值,@see InitCode 说明 * 2 - 初始化成功,测试证书 * 1 - 初始化成功,正式证书 * 0 - 未初始化 * -1 - 无效证书 * -2 - 无效包名 * -3 - 无效应用名 * -4 - 过期证书 * -5 - 无效路径 * -6 - 无效模型 */ int authorizeSDK(const char* license, std::string resDir); /** * setRenderEnable 渲染开关 * * @param enable 开关 */ void setRenderEnable(bool enable); /** * initTextureRenderer 初始化纹理渲染,PC端暂未开放 * * @param width 纹理宽度 * @param height 纹理高度 * @param rotation 纹理朝向(即顺时针旋转至朝向为正的角度) * @param isMirror 纹理是否有镜像 * @param maxFaces 最大检测人脸数量(影响性能,区间为[1, 5]) * * @return 初始化结果 */ bool initTextureRenderer(int width, int height, int rotation, bool isMirror, int maxFaces); /** * processTexture 纹理渲染接口,PC端暂未开放 * * @param textureId 纹理ID * * @return 渲染后的纹理ID */ int processTexture(int textureId); /** * releaseTextureRenderer 释放纹理渲染资源 */ void releaseTextureRenderer(); /** * initBufferRenderer 初始化视频帧渲染 * * @param format 视频帧格式 * @param width 视频帧宽度 * @param height 视频帧高度 * @param rotation 视频帧朝向(即顺时针旋转至朝向为正的角度) * @param isMirror 视频帧是否有镜像 * @param maxFaces 最大检测人脸数量(影响性能,区间为[1, 5]) * * @return 初始化结果 */ bool initBufferRenderer(int format, int width, int height, int rotation, bool isMirror, int maxFaces); /** * processBuffer 视频帧渲染接口 * * @param buffer 视频帧数据 * */ void processBuffer(unsigned char* buffer); /** * releaseBufferRenderer 释放视频帧渲染资源 */ void releaseBufferRenderer(); /** * initImageRenderer 初始化图片渲染 * * @param format 图片格式 * @param width 图片宽度 * @param height 图片高度 * @param rotation 图片朝向(即顺时针旋转至朝向为正的角度) * @param isMirror 图片是否有镜像 * @param maxFaces 最大检测人脸数量(影响性能,区间为[1, 5]) * * @return 初始化结果 */ bool initImageRenderer(int format, int width, int height, int rotation, bool isMirror, int maxFaces); /** * processImage 图片渲染接口 * * @param buffer 图片数据 * */ void processImage(unsigned char* buffer); /** * releaseImageRenderer 释放图片渲染资源 */ void releaseImageRenderer(); /** * setBeauty 设置美肤 * * @param type 特效类别,@see HTE_W_BeautyTypes * @param value 特效参数 */ void setBeauty(int type, int value); /** * setReshape 设置美型 * * @param type 特效类别,@see HTE_W_ReshapeTypes * @param value 特效参数 */ void setReshape(int type, int value); /** * setHairStyling 设置美发 * * @param type 特效类别,@see HTE_W_HairTypes * @param value 特效参数 */ void setHairStyling(int type, int value); /** * setFilter 设置滤镜 * * @param type 滤镜类别,@see HTE_W_FilterTypes * @param name 滤镜名称 */ void setFilter(int type, std::string name); /** * setStyle 设置妆容推荐 * * @param style 风格类别,@see HTE_W_StyleTypes */ void setStyle(int style); /** * setARItem 设置AR道具 * * @param type 道具类别, @see HTE_W_ARItemTypes * @param name 道具名称 */ void setARItem(int type, std::string name); /** * setWatermarkParam 设置AR道具-水印参数,v2.0后启用 * 水印参数为水印图像在手机屏幕中相对视频帧的四个顶点的坐标值,配合外部操作框获取 * * @param x1 左上角横坐标值 * @param y1 左上角纵坐标值 * @param x2 左下角横坐标值 * @param y2 左下角纵坐标值 * @param x3 右下角横坐标值 * @param y3 右下角纵坐标值 * @param x4 右下角横坐标值 * @param y4 右下角纵坐标值 */ void setWatermarkParam(float x1, float y1, float x2, float y2, float x3, float y3, float x4, float y4); /** * setAISegmentation 设置AI抠图 * * @param name AI抠图效果名称,如果传null或者空字符,则取消人像抠图效果 */ void setAISegmentation(std::string name); /** * setChromaKeyingScene 设置色(键)值抠图特效场景 * * @param name 场景名称 */ void setChromaKeyingScene(std::string name); /** * setChromaKeyingCurtain 设置色(键)值抠图特效幕布颜色 * * @param color 幕布颜色,传字符串类型16进制色值 * 目前仅支持绿幕 (#00ff00) 蓝幕(#0000ff) 白幕(#ffffff)三种幕布颜色和透明幕布,默认为绿幕 */ void setChromaKeyingCurtain(std::string color); /** * setChromaKeyingParams 设置色(键)值抠图特效调节参数 * * @param type 参数类型,0-相似度;1-平滑度;2-祛色度;3-精确度 * @param value 调节参数,参数范围0-100 */ void setChromaKeyingParams(int type, int value); /** * setGesture 设置手势识别特效 * * @param name 手势识别效果名称,如果传null或者空字符,则取消手势识别效果 */ void setGesture(std::string name); /** * setMakeup 设置美妆特效 * * @param type 美妆类别,@see HTE_W_MakeupTypes * @param name 美妆名称 * @param value 美妆参数 */ void setMakeup(int type, std::string name, int value); /** * setBodyBeauty 设置美体特效 * * @param type 美体类别,@see HTE_W_BodyBeautyTypes * @param value 美体名称 */ void setBodyBeauty(int type, int value); /** * isTracking 判断是否检测到人脸 * * @return 检测到的人脸个数,返回 0 代表没有检测到人脸 */ int isTracking(); /** * setExtremeLimitEnable 设置参数极值限制开关,默认为开 */ void setExtremeLimitEnable(bool enable); /** * getVersionString 获取当前 SDK 版本信息 * * @return 版本信息 */ std::string getVersionString(); ``` #### **4. 使用** **初始化** - 调用初始化接口 ```c++ /** * 离线鉴权初始化方法 */ int initStatus = HTE::authorizeSDK(hte_license_str.c_str(), ".\\..\\HTEffectBundle"); LOG_I("HTEffect init status: %d", initStatus); ``` **渲染** - 在视频帧回调里调用渲染接口 ```c++ /** * 视频帧 */ // 初始化渲染器 if (!isInitHTEffect) { isInitHTEffect = HTE::initBufferRenderer(3, frame.cols, frame.rows, 0, false, 5); } // 渲染特效设置 HTE::setBeauty(0, 100); //! 美白 HTE::setARItem(0, "ht_sticker_effect_angel"); //!动态贴纸 // 其它渲染效果设置 // 渲染 HTE::processBuffer(frame.data); ``` **销毁** - 结束渲染时,需根据视频格式,调用对应的释放方法 ```c++ HTE::releaseBufferRenderer(); ```
---- ## **示例代码** > [Demo下载](.\HTEffect_PC)
---- ## **联系与反馈** 虹图AI开放平台是基于虹图自研的AI能力,打造的围绕音视频等应用场景的AI技术开放平台。提供人像人体特效、人体行为分析、内容审核、人脸实名认证、图像特效等视觉AI技术,加速AI为中小企业业务赋能。自成立至2022年底,虹图已经累计赋能直播、社交、教育、游戏电竞、IoT、XR、元宇宙等10余个行业赛道,服务平台近1500家,终端使用数量超过1.2亿台。 虹图探索了AI结合场景和生态的方法,围绕“AI产品+场景+生态合作“的方案模式,以音视频应用为切入场景,打造服务音视频应用全生命周期的AI产品矩阵,加以组合生态合作伙伴产品,实现平台的“开放”意义,为用户的业务需求提供整体解决方案,与用户实现价值共生。 ### 1. 官网地址: [www.texeljoy.com](https://www.texeljoy.com) ### 2. 商务合作: 400-178-9918 ### 3. 邮箱地址: business@texeljoy.com ### 4. 公众号: