绿幕,是一种广泛应用于电影、电视制作和视频编辑领域的技术。它通过在拍摄或录制过程中使用一块特殊颜色(通常是绿色)的背景布,然后在后期制作中将该颜色替换成其他图像或视频素材。这种技术主要基于颜色键盘合成技术(chroma keying),可以实现在虚拟环境中展示各种场景和效果。
相芯SDK绿幕功能使用图像分割算法将视频或图像中的前景和背景进行分离,具有较高的质量和准确性。对于其中的绿色背景,也能做到准确分离并平滑替代其他背景,从而产生逼真的绿幕效果。同时相芯SDK还具备较高的实时性和效率性,能够在实时或快速处理的情况下实现绿幕效果。相芯SDK支持多平台和其他附加功能的叠加使用,比如绿幕和美颜的叠加使用。
功能介绍
相芯SDK绿幕功能详细介绍:
- 安全区:相芯SDK提供的绿幕技术中,安全区指在视频编辑过程中需要保留的区域,以确保前景元素(例如人物或物体)不被意外地裁剪或遮挡。通过使用安全区,用户可以精确控制绿幕效果的应用范围,确保关键的前景元素不受到意外的修改。这对于保持视频的一致性和完整性非常重要,尤其是在涉及人物或需要保留特定物体的场景中。
- 背景替换:相芯SDK还支持绿幕背景替换,这项功能利用计算机视觉和图像处理技术,准确识别并分离视频或图像中的绿色背景,然后将其替换为用户自定义的背景。
- 相似度参数:相似度参数用于控制背景和前景之间的相似度阈值。较低的相似度阈值会更严格地分离背景和前景,确保准确性,但可能导致一些细节丢失。较高的相似度阈值则可能使得背景和前景的边界模糊,但可以保留更多的细节。用户可以根据需要调整相似度参数,以达到预期的分离效果。
- 关键颜色提取:关键颜色提取是指从绿色背景中提取关键色彩信息的过程。在绿幕技术中,绿色通常被用作背景色,因为它在大多数场景中相对较少出现于前景中。关键颜色提取算法可以识别并提取出这个特定的绿色,以便在后续的背景替换过程中准确地分离背景和前景。
更多参数,详见相芯科技官网
2.使用前必查
在项目中使用道具贴纸特效之前,请确保:
- 已在项目中引入Faceunity SDK,详情请参考Faceunity集成文档。
- 已申请包含绿幕权限的authpack证书文件。
3.使用步骤
3.1. build.gradle配置
allprojects配置
allprojects {
repositories {
...
maven { url 'https://maven.faceunity.com/repository/maven-public/' }
...
}
}
dependencies导入依赖
dependencies {
...
implementation 'com.faceunity:core:8.6.0'
implementation 'com.faceunity:model:8.6.0'
...
}
3.2构造绿幕对象BgSegGreen
绿幕bundle主要是用来作绿幕抠图使用的,用绿色或蓝色背景,抠图效果会更佳。
加载绿幕道具bundle示例:
BgSegGreen bgSegGreen = new BgSegGreen(new FUBundleData(DemoConfig.BUNDLE_BG_SEG_GREEN));
设置绿幕参数:
bgSegGreen.setSimilarity(BgSegGreenSource.SIMILARITY);//设置相似度
bgSegGreen.setSmoothness(BgSegGreenSource.SMOOTHNESS);//设置平滑度
bgSegGreen.setTransparency(BgSegGreenSource.TRANSPARENCY);//设置相似度
3.3构造安全区
相芯绿幕支持构造安全区域,除了内置的安全区之外还支持用户上传自定义图片,安全区域不参与绿幕抠像。
构造自定义安全区图片示例方法如下:
Public static BgSegGreenSafeAreaBean buildSafeAreaCustomBean(String path) {
if (path != null && path.trim().length() > 0 && new File(path).exists()) {
saveCachePortraitSegment(path);
return new BgSegGreenSafeAreaBean(0, BgSegGreenSafeAreaBean.ButtonType.NORMAL1_BUTTON, path,false);
}
return null;
}
切换安全区域图片:
void onSafeAreaSelected(BgSegGreenSafeAreaBean bean);
3.4创建自定义背景
除了内置绿幕的5个背景道具以外,相芯还支持用户自定义绿幕背景,灵活打造各种场景下多功能背景。
public static ArrayList<BgSegGreenBackgroundBean> buildBgSegGreenBackground() {
ArrayList<BgSegGreenBackgroundBean> backgroundBeans = new ArrayList<>();
String fileDir = "bg_seg_green" + File.separator + "sample" + File.separator;
backgroundBeans.add(new BgSegGreenBackgroundBean(R.string.cancel, R.mipmap.icon_control_none, null));
backgroundBeans.add(new BgSegGreenBackgroundBean(R.string.bg_seg_green_science, R.mipmap.icon_green_science, fileDir + "science.mp4"));
return backgroundBeans;
}
3.5 FURenderKit加载当前特效
加载当前绿幕特效:
public void bindCurrentRenderer() {
FUAIKit.getInstance().setMaxFaces(1); // 设置人脸数
mFURenderKit.setFaceBeauty(FaceBeautyDataFactory.faceBeauty); //加载美颜
mFURenderKit.setBgSegGreen(mBgSegGreen); //加载绿幕
mBgSegGreenListener.onBackgroundSelected(mBgSegGreenBackgroundBeans.get(mCurrentBackgroundIndex));//加载绿幕背景
mBgSegGreenListener.onSafeAreaSelected(mBgSegGreenSafeAreaBeans.get(mCurrentSafeAreaIndex)); //加载安全区
}
4.API参考列表
Module | 类名 | 说明 |
core | BgSegGreen | 绿幕抠像功能业务模型 |
BgSegGreen
属性 | 说明 | 默认值 | 备注 |
enable | 绿幕抠像开关 | true | true表示开启,false表示关闭 |
isBGRA | BGRA类型 | false | 背景图片的颜色是否是BGRA类型 |
colorRGB | 锚点颜色 | FUColorRGBData(0.0, 255.0, 0.0) | 选取的颜色RGB |
similarity | 相似度 | 0.518 | 取值范围0.0-1.0,相似度:色度最大容差,色度最大容差值越大,更多幕景被抠除 |
smoothness | 平滑度 | 0.22 | 取值范围0.0-1.0,平滑:色度最小限差,值越大,更多幕景被扣除 |
transparency | 透明度 | 0.0 | 取值范围0.0-1.0,透明度:图像前后景透明度过度,值越大,两者边缘处透明过度更平滑 |
centerPoint | 中心坐标 | FUCoordinate2DData(0.5, 0.5) | 取值范围0.0-1.0, [0.5,0.5]表示中心点坐标 |
zoom | 缩放程度 | 1.0 | 取值范围0.25-4.0 |
5.总结
更多绿幕功能玩法详见相芯SDK文档,如在接入中遇到问题,可联系相芯科技进行咨询!
标签:安全区,相芯,背景,绿幕,new,SDK From: https://blog.51cto.com/u_16072036/6377659