gpt4 book ai didi

android - OpenCV-BackgroundSubtractorMOG2中的Apply方法在5-10秒后使Android应用程序崩溃

转载 作者:行者123 更新时间:2023-12-02 16:25:10 27 4
gpt4 key购买 nike

我正在开发一个Android application using OpenCV,必须在其中实现背景减法。我能够看到一些灰度框架和背景被删除,尽管它只持续一会儿,然后应用程序崩溃了。Technique used: BackgroundSubtractorMOG2
这是我的OnCameraFrame片段

public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {


Mat frame = inputFrame.rgba();
Mat mRgb = new Mat();
Mat mFGMask = new Mat();
BackgroundSubtractorMOG2 mog2 = Video.createBackgroundSubtractorMOG2();

Imgproc.cvtColor(frame, mRgb, Imgproc.COLOR_RGBA2RGB);
mog2.apply(mRgb, mFGMask);
Imgproc.cvtColor(mFGMask, frame, Imgproc.COLOR_GRAY2RGBA);

return frame;
}

提前致谢。

最佳答案

我能够解决我的问题。
使用的新Mat()导致内存管理问题。必须在onCameraViewStarted中将其初始化一次,并且必须在onCameraViewStopped中释放返回的Mat。通过OpenCV社区按照建议修改代码后,我能够正确执行我的应用程序。
1.首先声明

private Mat mRgb;
private Mat mFGMask;
private Mat frame;
private BackgroundSubtractorMOG2 mog2;
  • 在onCameraViewStarted中初始化

    public void onCameraViewStarted(int width,int height){
    mRgb = new Mat();
    mFGMask = new Mat();
    mog2 = Video.createBackgroundSubtractorMOG2();

  • 在onCameraViewStopped中释放返回帧

    public void onCameraViewStopped(){
    frame.release();


  • 有关完整代码: https://github.com/rishirajrsawant/OpenCV-Background-Subtraction

    关于android - OpenCV-BackgroundSubtractorMOG2中的Apply方法在5-10秒后使Android应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61830052/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com