背景图片替换功能使用说明
功能概述
此修改允许将Robust Video Matting (RVM)的背景从单一颜色替换为指定的图片。
使用方式
1. Java/Kotlin层调用
// 设置背景图片
Bitmap backgroundBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.background);
RVMNcnn.setBackgroundImage(backgroundBitmap);
// 清除背景图片,恢复默认颜色
RVMNcnn.setBackgroundImage(null);
2. JNI接口
新增JNI函数:
Java_org_example_project_RVMNcnn_setBackgroundImage(JNIEnv* env, jobject thiz, jobject bitmap)
3. C++层API
新增RVM类方法:
-
void set_background_image(const cv::Mat& background)- 设置背景图片 -
void clear_background_image()- 清除背景图片,使用默认颜色
技术细节
背景图片处理
- 支持RGBA_8888和RGB_565格式的Bitmap
- 自动转换为OpenCV BGR格式
- 支持任意尺寸的图片,会自动缩放适配
- 如果未设置背景图片,使用默认颜色RGB(120, 255, 155)
混合算法
使用alpha混合公式:
result = foreground * alpha + background * (1 - alpha)
性能考虑
- 背景图片会在设置时进行一次格式转换和缩放
- 每帧渲染时进行实时像素采样
- 建议使用与输入视频分辨率相近的背景图片以获得最佳性能
注意事项
- 背景图片应该是RGB或RGBA格式的8位图像
- 图片尺寸不需要与输入视频完全一致,会自动适配
- 设置null可以恢复默认的背景颜色
- 背景图片会在RVM实例销毁时自动释放