美摄SDK For HarmonyOS Next
3.14.0
|
NveEffectKit集成了美颜、美型、美妆、妆容、滤镜、人脸道具功能。依赖库为3.8.0以上的美摄Effect库
Android打包为AAR库,复制到libs目录下,在build.gradle设置aar的编译引入
需要传入授权文件路径,该路径可以是assets下路径,或者本地的绝对路径
初始化模型,需传入模型类型和路径(路径可以为assets路径或本地绝对路径)
类型 | 名称 | 用途 |
---|---|---|
NveDetectionModelType.FACE | 人脸 | 人脸道具使用 |
NveDetectionModelType.FAKE_FACE | 假脸 | 人脸道具使用 |
NveDetectionModelType.MAKEUP2 | 美妆 | 妆容和单妆使用 |
NveDetectionModelType.EYEBALL | 眼球 | 部分人脸道具会用到眼球效果 |
NveDetectionModelType.SEGMENTATION | 背景分割 | 部分人脸道具会用到分割效果 |
NveDetectionModelType.AVATAR | avatar | 根据表情动的特效果类别会使用这个模型 |
参数 | 类型 | 用途 |
---|---|---|
enable | boolean | 美颜功能开关 |
blurType | NveBeautyBlurTypeEnum | 磨皮类型 |
blurIntensity | float | 磨皮强度,[0-1] |
whiteningType | NvBeautyWhiteningTypeEnum | 美白类型 |
whiteningIntensity | float | 美白强度,[0-1] |
matteIntensity | float | 去油光强度,[0-1] |
matteFillRadius | float | 去油光半径,[0-1] |
reddeningIntensity | float | 红润强度,[0-1] |
definitionIntensity | float | 清晰度强度,[0-1] |
sharpnessIntensity | float | 锐度强度,[0-10] |
磨皮类型
名称 | 用途 |
---|---|
NveBeautyBlurTypeEnum.BuffingSkin | 普通磨皮 |
NveBeautyBlurTypeEnum.AdvancedBuffingSkin1 | 高级磨皮1 |
NveBeautyBlurTypeEnum.AdvancedBuffingSkin2 | 高级磨皮2 |
NveBeautyBlurTypeEnum.AdvancedBuffingSkin3 | 高级磨皮3 |
美白类型
名称 | 用途 |
---|---|
NvBeautyWhiteningTypeEnum.WhiteningA | 美白A |
NvBeautyWhiteningTypeEnum.WhiteningB | 美白B |
名称 | 用途 |
---|---|
NveShapeTypeEnum.FACE_WIDTH | 窄脸,[-1,1] |
NveShapeTypeEnum.FACE_LENGTH | 小脸,[-1,1] |
NveShapeTypeEnum.FACE_SIZE | 瘦脸,[-1,1] |
NveShapeTypeEnum.FORE_HEAD | 额头,[-1,1] |
NveShapeTypeEnum.CHIN | 下巴,[-1,1] |
NveShapeTypeEnum.EYE_SIZE | 大眼,[-1,1] |
NveShapeTypeEnum.EYE_ANGLE | 眼角,[-1,1] |
NveShapeTypeEnum.NOSE_WIDTH | 瘦鼻,[-1,1] |
NveShapeTypeEnum.NOSE_LENGTH | 长鼻,[-1,1] |
NveShapeTypeEnum.MOUTH_SIZE | 嘴型,[-1,1] |
NveShapeTypeEnum.MOUTH_CORNER | 嘴角,[-1,1] |
名称 | 用途 |
---|---|
NvMicroShapeTypeEnum.HEAD_SIZE | 缩头,[-1,1] |
NvMicroShapeTypeEnum.CHEEKBONE_WIDTH | 颧骨宽,[-1,1] |
NvMicroShapeTypeEnum.JAW_WIDTH | 下颌宽,[-1,1] |
NvMicroShapeTypeEnum.TEMPLE_WIDTH | 太阳穴宽,[-1,1] |
NvMicroShapeTypeEnum.NASOLABIAL_FOLDS | 法令纹,[0,1] |
NvMicroShapeTypeEnum.DARK_CIRCLES | 黑眼圈,[0,1] |
NvMicroShapeTypeEnum.BRIGHTEN_EYES | 亮眼,[0,1] |
NvMicroShapeTypeEnum.WHITEN_TEETH | 美牙,[0,1] |
NvMicroShapeTypeEnum.EYE_ANGLE_DEGREE | 眼角度,[-1,1] |
NvMicroShapeTypeEnum.EYE_DISTANCE | 眼离,[-1,1] |
NvMicroShapeTypeEnum.EYE_HEIGHT | 眼高度,[-1,1] |
NvMicroShapeTypeEnum.EYE_WIDTH | 眼宽度,[-1,1] |
NvMicroShapeTypeEnum.EYE_ARC | 眼弧度,[-1,1] |
NvMicroShapeTypeEnum.EYE_Y_OFFSET | 眼上下,[-1,1] |
NvMicroShapeTypeEnum.PHILTRUM | 人中,[-1,1] |
NvMicroShapeTypeEnum.NOSE_BRIDGE_WIDTH | 鼻梁宽度,[-1,1] |
NvMicroShapeTypeEnum.NOSE_HEAD | 鼻头,[-1,1] |
NvMicroShapeTypeEnum.EYEBROW_THICKNESS | 眉毛粗细,[-1,1] |
NvMicroShapeTypeEnum.EYEBROW_ANGLE | 眉角度,[-1,1] |
NvMicroShapeTypeEnum.EYEBROW_Y_OFFSET | 眉上下,[-1,1] |
NvMicroShapeTypeEnum.EYEBROW_X_OFFSET | 眉间距,[-1,1] |
美颜、美型、微整形的各个参数均来自于美摄文档仓库中AR Scene的说明,更多进阶用法见上方链接。
名称 | 用途 |
---|---|
NveMakeupTypeEnum.Lip | 口红 |
NveMakeupTypeEnum.Eyebrow | 眉毛 |
NveMakeupTypeEnum.Eyeshadow | 眼影 |
NveMakeupTypeEnum.Eyelash | 睫毛 |
NveMakeupTypeEnum.Eyeliner | 眼线 |
NveMakeupTypeEnum.Blusher | 腮红 |
NveMakeupTypeEnum.Shadow | 修容 |
NveMakeupTypeEnum.Brighten | 高光 |
NveMakeupTypeEnum.ComposeMakeup | 妆容 |
NveEffectKit除了上述已有功能,用户可自已创建美摄支持的特效,使用中间层来渲染。比如背景分割功能(需提前初始化人脸和分割模型),实现如下:
上述的内容中基本都涉及包安装,官网有安装说明
可以使用已经封装好的工具类(NvAssetPackageManagerUtil)示例代码:
其中需要重点关注的参数有:
1、packagePath– 安装包的路径,可以为assets路径或者本地绝对路径
2、packageLicPath– 安装包的授权文件路径
3、packageType– 安装包类型,具体类型见:美摄SDK For Android: com.meicam.sdk.NvsAssetPackageManager类 参考 (meishesdk.com)
NveRenderInput主要包括渲染配置(NveRenderConfig),纹理(NveTexture),Buffer(NveImageBuffer),图像的格式(pixelFormat)。具体参数如下:
(1)NveRenderConfig相关参数,包括相机朝向(cameraOrientation)和渲染模式(NveRenderMode)
NveRenderMode | 说明 |
---|---|
NveRenderConfig.NveRenderMode.TEXTURE_TEXTURE | 纹理入,纹理出 |
NveRenderConfig.NveRenderMode.BUFFER_TEXTURE | Buffer入,纹理出 |
NveRenderConfig.NveRenderMode.BUFFER_BUFFER | Buffer入,Buffer出 |
(2)NveTexture相关参数
参数 | 说明 |
---|---|
textureId | 纹理ID |
mirror | 是否水平翻转,OES纹理转Texture 2D纹理需要 |
NveSize | 纹理宽高 |
NveTextureType | 纹理类型 |
NveTextureLayout | 纹理方向 |
NveTextureType | 说明 |
---|---|
NveTextureType.NV_COMMON_TEXTURE | 普通纹理 |
NveTextureType.NV_OES_TEXTURE | OpenGL OES纹理 |
NveTextureLayout | 说明 |
---|---|
NveTextureLayout.UP_SIDE_DOWN | 上下颠倒 |
NveTextureLayout.DOWN_SIDE_UP | 正常 |
(3)NveImageBuffer相关参数
名称 | 说明 |
---|---|
data | Buffer数据 |
NveSize | Buffer宽高 |
mirror | 是否水平翻转 |
displayRotation | 当前图像需要旋转的角度 |
rowPitchY | 图像每行在Frame中占的字节数,如果图像格式是NV21,YUV420, 则指Y平面 |
rowPitchUV | 图像每行在Frame中占的字节数 一般是指UV平面,如果格式为RGBA,这个量没有意义 |
(4)pixelFormat图像格式,其封装在NvFormatType中,具体对应可参考官网视频帧像素格式
NveRenderOutput主要包括渲染结果(NveRenderError),输出纹理(NveTexture,参数同上),输出Buffer(NveImageBuffer,参数同上)。其渲染结果参数如下
名称 | 说明 |
---|---|
NveRenderError.NO_ERROR | 成功 |
NveRenderError.ERROR_UNKNOWN | 未知错误 |
NveRenderError.INVALID_TEXTURE | 无效的纹理 |
NveRenderError.INVALID_INPUT_PARAM | 无效的输入参数,针对NvRenderInput |
在退出或者不再需要渲染时,需要释放相关资源,可调用下面的方法
注意:该方法需要在GLContext所在的线程调用
在页面退出或者应用杀死的情况下进行SDK的销毁,可调用下面的方法
注意:如果是在某个页面退出时进行销毁,那么在其他地方还需要使用SDK,那么在使用前就需要重新初始化SDK,即调用init方法