我正在尝试使用带有android studio的android手机摄像头进行背景扣除。我安装了OpenCV4Android 3.4.3,并尝试使用Backgorund Subtraction MOG2。我在清单中授予了相机许可并正确设置了相机。我将相机设置为320 x240。我没有移动相机。
这是我的变量:
private Mat foreground;
Mat mRgba;
private BackgroundSubtractorMOG2 mog;
这是我的代码onCreate和onCameraFrame:
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "called onCreate");
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_main);
mOpenCvCameraView = (JavaCameraView) findViewById(R.id.camera_view);
mOpenCvCameraView.setMaxFrameSize(320, 240);
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
mOpenCvCameraView.setCvCameraViewListener(this);
}
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame)
{
mRgba = inputFrame.rgba();
foreground = new Mat();
mog = Video.createBackgroundSubtractorMOG2(10, 16, false);
mog.apply(mRgba, foreground, 0.1);
return foreground;
}
但是,我在return foreground
上只有白屏,在return mRgba
上只有低分辨率相机。它与背景扣除无关。我想获取前景蒙版。
设置历史或阈值或学习率的值是否有问题?因为它尝试了几种组合,但没有用。如果出现编程错误,请提供帮助。谢谢。