名称 最后更新
..
ncnn-20250503-android-vulkan 正在载入提交数据...
opencv-mobile-4.11.0-android 正在载入提交数据...
CMakeLists.txt 正在载入提交数据...
README_BACKGROUND.md 正在载入提交数据...
ndkcamera.cpp 正在载入提交数据...
ndkcamera.h 正在载入提交数据...
opencv_processor.cpp 正在载入提交数据...
rvm.cpp 正在载入提交数据...
rvm.h 正在载入提交数据...
rvmncnn.cpp 正在载入提交数据...

背景图片替换功能使用说明

功能概述

此修改允许将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)

性能考虑

  • 背景图片会在设置时进行一次格式转换和缩放
  • 每帧渲染时进行实时像素采样
  • 建议使用与输入视频分辨率相近的背景图片以获得最佳性能

注意事项

  1. 背景图片应该是RGB或RGBA格式的8位图像
  2. 图片尺寸不需要与输入视频完全一致,会自动适配
  3. 设置null可以恢复默认的背景颜色
  4. 背景图片会在RVM实例销毁时自动释放