智能客服
你问我答,随时在线为你解决问题
支持用户自定义滤镜,对输入视频及图像应用自定义滤镜效果,支撑场景多样化的图像美化需求。
- // 创建专属滤镜AI引擎
- HVEExclusiveFilter filterEngine = new HVEExclusiveFilter();
-
- // 初始化专属滤镜AI引擎
- filterEngine.initExclusiveFilterEngine(new HVEAIInitialCallback() {
- @Override
- public void onProgress(int progress) {
- // 初始化进度回调
- }
-
- @Override
- public void onSuccess() {
- // 初始化成功
- }
-
- @Override
- public void onError(int errorCode, String errorMessage) {
- // 初始化失败
- }
- });
-
- // 创建单图模仿滤镜,指定一个Bitmap和滤镜的名字
- // 返回滤镜ID,通过此ID,可以在数据库中查询滤镜相关的所有信息
- String effectId = filterEngine.createExclusiveEffect(bitmap, "自定义滤镜01");
-
- // 将滤镜添加到特效泳道中,起始位置0,时长3000ms
- effectLane.appendEffect(new HVEEffect.Options(
- HVEEffect.CUSTOM_FILTER + effectName, effectId, ""), 0, 3000);
-
- // 创建克隆滤镜,指定两个Bitmap和滤镜的名字
- // 返回滤镜ID,通过此ID,可以在数据库中查询滤镜相关的所有信息
- String effectId2 = filterEngine.imitateFilter(bitmap1, bitmap2, "自定义滤镜02");
-
- // 将滤镜添加到特效泳道中,起始位置0,时长3000ms
- effectLane.appendEffect(new HVEEffect.Options(
- HVEEffect.CUSTOM_FILTER + effectName, effectId2, ""), 0, 3000);
输入一张单人或多人照片,检测人物并基于参考色卡样式,实现一键式染发,头发染色程度可调节。
- // 初始化一键染发AI引擎
- visibleAsset.initHairDyeingEngine(new HVEAIInitialCallback() {
- @Override
- public void onProgress(int progress) {
- // 初始化进度
- }
-
- @Override
- public void onSuccess() {
- // 初始化成功
- }
-
- @Override
- public void onError(int errorCode, String errorMessage) {
- // 初始化失败
- }
- });
-
- // 初始化成功后,添加一键染发AI特效,指定一键染发的色卡和默认强度
- visibleAsset.addHairDyeingEffect(new HVEAIProcessCallback() {
- @Override
- public void onProgress(int progress) {
- // 一键染发AI特效处理进度
- }
-
- @Override
- public void onSuccess() {
- // 一键染发AI特效处理成功
- }
-
- @Override
- public void onError(int errorCode, String errorMessage) {
- // 一键染发AI特效处理失败
- }
- }, colorPath, defaultStrength);
-
- // 移除一键染发AI特效
- visibleAsset.removeHairDyeingEffect();
支持对用户输入视频画面中出现的某个特定人物进行自动追踪,生成主视角为特定人物的主角视频。当视频中包含人物时,您需要先选择指定人物才能进行追踪。
- // 初始化人物追踪AI引擎
- videoAsset.initHumanTrackingEngine(new HVEAIInitialCallback() {
- @Override
- public void onProgress(int progress) {
- // 初始化进度
- }
-
- @Override
- public void onSuccess() {
- // 初始化成功
- }
-
- @Override
- public void onError(int errorCode, String errorMessage) {
- // 初始化失败
- }
- });
-
- // 初始化成功后,通过坐标点选中指定的人物进行追踪,返回选中人物的矩形框坐标点
- List<Float> rects = videoAsset.selectHumanTrackingPerson(bitmap, position2D);
-
- // 添加人物追踪AI特效
- videoAsset.addHumanTrackingEffect(new HVEAIProcessCallback() {
- @Override
- public void onProgress(int progress) {
- // 人物追踪AI特效处理进度
- }
-
- @Override
- public void onSuccess() {
- // 人物追踪AI特效处理成功
- }
-
- @Override
- public void onError(int errorCode, String errorMessage) {
- // 人物追踪AI特效处理失败
- }
- });
-
- // 中断人物追踪AI特效处理
- videoAsset.interruptHumanTracking();
-
- // 移除人物追踪AI特效
- videoAsset.removeHumanTrackingEffect();
输入一个视频,识别出其中指定时长的精彩片段。建议时长为[1, 5],单位:s。
不可与其它AI内嵌特效共存。
- // 创建精彩片段处理对象
- HVEVideoSelection hveVideoSelection = new HVEVideoSelection();
-
- // 初始化精彩片段AI引擎
- hveVideoSelection.initVideoSelectionEngine(new HVEAIInitialCallback() {
- @Override
- public void onProgress(int progress) {
- // 初始化进度
- }
-
- @Override
- public void onSuccess() {
- // 初始化成功
- }
-
- @Override
- public void onError(int errorCode, String errorMessage) {
- // 初始化失败
- }
- });
-
- // 初始化成功后,提取精彩片段,filePath为视频的路径,duration为需要提取片段的长度
- hveVideoSelection.getHighLight(filePath, duration, new HVEVideoSelectionCallback() {
- @Override
- public void onResult(long start) {
- // 精彩片段提取成功
- }
- });
-
- // 释放精彩片段AI引擎
- hveVideoSelection.releaseVideoSelectionEngine();
不可与其它AI内嵌特效共存。
- // 初始化一键动效AI引擎
- imageAsset.initTimeLapseEngine(new HVEAIInitialCallback() {
- @Override
- public void onProgress(int progress) {
- // 初始化进度
- }
-
- @Override
- public void onSuccess() {
- // 初始化成功
- }
-
- @Override
- public void onError(int errorCode, String errorMessage) {
- // 初始化失败
- }
- });
-
- // 初始化成功后,检查图片中是否有天空或者水面
- int motionType = -1;
- imageAsset.detectTimeLapse(new HVETimeLapseDetectCallback() {
- @Override
- public void onResult(int state) {
- // 记录state作为添加一键动效AI特效的参数
- motionType = state;
- }
- });
-
- // skySpeed:天空的运动速度;skyAngle:天空的运动方向;waterSpeed:水面的运动速度;waterAngle:水面的运动方向
- HVETimeLapseEffectOptions options =
- new HVETimeLapseEffectOptions.Builder().setMotionType(motionType)
- .setSkySpeed(skySpeed)
- .setSkyAngle(skyAngle)
- .setWaterAngle(waterAngle)
- .setWaterSpeed(waterSpeed)
- .build();
-
- // 添加一键动效AI特效
- imageAsset.addTimeLapseEffect(options, new HVEAIProcessCallback() {
- @Override
- public void onProgress(int progress) {
- }
-
- @Override
- public void onSuccess() {
- }
-
- @Override
- public void onError(int errorCode, String errorMessage) {
- }
- });
-
- // 中断一键动效AI特效处理
- imageAsset.interruptTimeLapse();
-
- // 移除一键动效AI特效
- imageAsset.removeTimeLapseEffect();
支持对用户输入的视频或图片画面中出现的人脸进行识别并添加马赛克或贴纸特效遮挡人脸。
- // 初始化人脸遮挡AI引擎
- visibleAsset.initFacePrivacyEngine(new HVEAIInitialCallback() {
- @Override
- public void onProgress(int progress) {
- // 初始化进度
- }
-
- @Override
- public void onSuccess() {
- // 初始化成功
- }
-
- @Override
- public void onError(int errorCode, String errorMessage) {
- // 初始化失败
- }
- });
-
- // 初始化成功后,启动人脸遮挡的人脸检测
- visibleAsset.startFacePrivacyDetect(new HVEAIProcessCallback() {
- @Override
- public void onProgress(int progress) {
- // 人脸检测进度
- }
-
- @Override
- public void onSuccess() {
- // 人脸检测成功
- }
-
- @Override
- public void onError(int errorCode, String errorMessage) {
- // 人脸检测失败
- }
- });
-
- // 获取人脸检测结果
- List<HVEAIFaceTemplate> faceTemplateList = visibleAsset.getAIFaceTemplates();
-
- // 中断人脸遮挡的人脸检测
- visibleAsset.interruptFacePrivacyDetect();
-
- // 添加人脸遮挡贴纸特效
- List<HVEAIFaceStickerInput> faceStickerInputList = new ArrayList<>();
-
- // localStickerPath:用户选择的贴纸路径;localStickerType:用户选择的贴纸类型
- HVEAIFaceStickerInput aiFaceEffectInput = new HVEAIFaceStickerInput(faceTemplateList.get(i),
- localStickerPath, localStickerType);
- faceStickerInputList.add(aiFaceEffectInput);
- ((HVEVisibleAsset) visibleAsset).addFacePrivacyEffect(faceStickerInputList);
-
- // 移除人脸遮挡贴纸特效
- visibleAsset.removeFacePrivacyEffect();
支持对输入的视频或图片进行人像或头部分割,生成分割后的视频、图片或贴纸。
- // 初始化分割AI引擎。segPart为int类型,值为1时,进行人像分割;值为其他时,进行头部分割
- visibleAsset.initBodySegEngine(segPart, new HVEAIInitialCallback() {
- @Override
- public void onProgress(int progress) {
- // 初始化进度
- }
-
- @Override
- public void onSuccess() {
- // 初始化成功
- }
-
- @Override
- public void onError(int errorCode, String errorMessage) {
- // 初始化失败
- }
- });
-
- // 分割的处理结果成功后,添加分割AI特效
- visibleAsset.addBodySegEffect(new HVEAIProcessCallback() {
- @Override
- public void onProgress(int progress) {
- // 分割AI特效处理进度
- }
-
- @Override
- public void onSuccess() {
- // 分割AI特效处理成功
- }
-
- @Override
- public void onError(int errorCode, String errorMsg) {
- // 分割AI特效处理失败
- }
- });
-
- // 中断分割AI特效处理
- visibleAsset.interruptBodySegEffect();
-
- // 移除分割AI特效
- visibleAsset.removeBodySegEffect();
-
- // 释放分割AI引擎
- visibleAsset.releaseBodySegEngine();
支持对输入的视频画面中指定的某个指定目标进行分割,生成分割后的视频图像。当视频中包含物体时,您需要先选择指定目标物体才能进行分割。
- // 初始化目标分割AI引擎
- videoAsset.initSegmentationEngine(new HVEAIInitialCallback() {
- @Override
- public void onProgress(int progress) {
- // 初始化进度
- }
-
- @Override
- public void onSuccess() {
- // 初始化成功
- }
-
- @Override
- public void onError(int errorCode, String errorMessage) {
- // 初始化失败
- }
- });
-
- // 初始化成功后,选择需要分割的目标进行分割,返回选择分割目标的的处理结果
- // bitmap包含需要分割的目标的视频帧图片;timeStamp为视频帧图片在时间线上的时间戳;points为基于视频帧图片的坐标点集合,左上角为原点坐标,坐标点应位于需要分割的目标内,且个数建议大于等于2,需根据坐标点轨迹来确定选择的目标
- int result = videoAsset.selectSegmentationObject(bitmap, timeStamp, points);
-
- // 目标分割的处理结果成功后,添加目标分割AI特效
- videoAsset.addSegmentationEffect(new HVEAIProcessCallback() {
- @Override
- public void onProgress(int progress) {
- // 目标分割AI特效处理进度
- }
-
- @Override
- public void onSuccess() {
- // 目标分割AI特效处理成功
- }
-
- @Override
- public void onError(int errorCode, String errorMessage) {
- // 目标分割AI特效处理失败
- }
- });
-
- // 中断目标分割AI特效处理
- videoAsset.interruptSegmentation();
-
- // 移除目标分割AI特效
- videoAsset.removeSegmentationEffect();
-
- // 释放目标分割AI引擎
- videoAsset.releaseSegmentationEngine();