Я пытаюсь сделать вычитание фона с помощью камеры телефона Android с Android Studio. Я установил OpenCV4Android 3.4.3 и попытался использовать Backgorund Subtraction MOG2. Я даю разрешение камеры в манифестах и правильно настраиваю камеру. Я установил камеру на 320 x 240. Я не двигал камеру.
Вот моя переменная:
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
. Это ничего не делает о вычитании фона. Я хочу получить маску переднего плана.
Есть ли какие-то проблемы с настройкой значения в истории, пороге или скорости обучения? потому что он пытается пару комбинаций, но это не работает. Пожалуйста, помогите, если есть какая-то программная ошибка. Спасибо.