java - error in apply method in Background subtraction in opencv android -


i want background subtraction on inputframe, , want return foreground mask. facing error bellow can 1 me fix in advance

my code:

package org.opencv.samples.tutorial1;  import org.opencv.android.baseloadercallback; import org.opencv.android.camerabridgeviewbase.cvcameraviewframe; import org.opencv.android.loadercallbackinterface; import org.opencv.android.opencvloader; import org.opencv.core.mat; import org.opencv.core.point; import org.opencv.core.scalar; import org.opencv.video.backgroundsubtractormog; import org.opencv.android.camerabridgeviewbase; import org.opencv.android.camerabridgeviewbase.cvcameraviewlistener2;  import android.app.activity; import android.os.bundle; import android.util.log; import android.view.menu; import android.view.menuitem; import android.view.surfaceview; import android.view.windowmanager; import android.widget.toast;  public class tutorial1activity extends activity implements cvcameraviewlistener2 {     private static final string tag = "divyesh::activity";      private camerabridgeviewbase mopencvcameraview;     private boolean              misjavacamera = true;     private menuitem             mitemswitchcamera = null;      public point p1 = new point(10, 2);     public point p2 = new point(100, 20);     public  scalar scalar = new scalar(255, 255, 255);     public mat fgmask;     public mat mrgba, mgray, mrgb;     //public backgroundsubtractor pmog, pmog2;     backgroundsubtractormog pmog;       private baseloadercallback mloadercallback = new baseloadercallback(this) {          @override         public void onmanagerconnected(int status) {             switch (status) {                 case loadercallbackinterface.success:                 {                     log.i(tag, "opencv loaded successfully");                     mopencvcameraview.enableview();                 } break;                 default:                 {                     super.onmanagerconnected(status);                 } break;             }         }     };       public tutorial1activity() {         log.i(tag, "instantiated new " + this.getclass());     }      /** called when activity first created. */     @override     public void oncreate(bundle savedinstancestate) {         log.i(tag, "called oncreate");         super.oncreate(savedinstancestate);         getwindow().addflags(windowmanager.layoutparams.flag_keep_screen_on);          setcontentview(r.layout.tutorial1_surface_view);          if (misjavacamera)             mopencvcameraview = (camerabridgeviewbase) findviewbyid(r.id.tutorial1_activity_java_surface_view);         else             mopencvcameraview = (camerabridgeviewbase) findviewbyid(r.id.tutorial1_activity_native_surface_view);          mopencvcameraview.setvisibility(surfaceview.visible);          mopencvcameraview.setcvcameraviewlistener(this);      }      @override     public void onpause()     {         super.onpause();         if (mopencvcameraview != null)             mopencvcameraview.disableview();     }      @override     public void onresume()     {         super.onresume();         opencvloader.initasync(opencvloader.opencv_version_2_4_3, this, mloadercallback);     }      public void ondestroy() {         super.ondestroy();         if (mopencvcameraview != null)             mopencvcameraview.disableview();     }      @override     public boolean oncreateoptionsmenu(menu menu) {         log.i(tag, "called oncreateoptionsmenu");         mitemswitchcamera = menu.add("toggle native/java camera");         return true;     }      @override     public boolean onoptionsitemselected(menuitem item) {         string toastmesage = new string();         log.i(tag, "called onoptionsitemselected; selected item: " + item);          if (item == mitemswitchcamera) {             mopencvcameraview.setvisibility(surfaceview.gone);             misjavacamera = !misjavacamera;              if (misjavacamera) {                 mopencvcameraview = (camerabridgeviewbase) findviewbyid(r.id.tutorial1_activity_java_surface_view);                 toastmesage = "java camera";             } else {                 mopencvcameraview = (camerabridgeviewbase) findviewbyid(r.id.tutorial1_activity_native_surface_view);                 toastmesage = "native camera";             }              mopencvcameraview.setvisibility(surfaceview.visible);             mopencvcameraview.setcvcameraviewlistener(this);             mopencvcameraview.enableview();             toast toast = toast.maketext(this, toastmesage, toast.length_long);             toast.show();         }          return true;     }      public void oncameraviewstarted(int width, int height) {         mrgba = new mat();         mgray = new mat();         mrgb = new mat();         fgmask = new mat();         log.i(tag, "before subtractor");         pmog = new backgroundsubtractormog();     }      public void oncameraviewstopped() {     }      public mat oncameraframe(cvcameraviewframe inputframe) {         log.i(tag, "before input frame");         mrgba = inputframe.rgba();         //imgproc.cvtcolor(mrgba, mrgb, imgproc.color_rgba2rgb);         log.i(tag,"before apply");         pmog.apply(mrgba, fgmask);         log.i(tag,"after apply");         //imgproc.cvtcolor(fgmask, mrgba, imgproc.color_gray2rgba);         return fgmask;      } } 

my error @ here:

/** *

computes foreground mask.

* * @param image next video frame. * @param fgmask output foreground mask 8-bit binary image. * * @see org.opencv.video.backgroundsubtractor.operator() */

public  void apply(mat image, mat fgmask) {      apply_1(nativeobj, image.nativeobj, fgmask.nativeobj);      return; } 

thanx lot if can solve or can give instruction...........

i haven't used or worked background subtraction before try following edit in code. mrgba = inputframe.rgba(); imgproc.cvtcolor(mrgba, mrgb, imgproc.color_rgba2bgr,4); log.i(tag,"before apply"); pmog.apply(mrgb, fgmask); log.i(tag,"after apply"); imgproc.cvtcolor(fgmask, mrgb, imgproc.color_gray2bgr,3); imgproc.cvtcolor(mrgb, mrgba, imgproc.color_bgr2rgba,4); return fgmask; also check link. think might help:http://www.codeproject.com/articles/791145/motion-detection-in-android-howto

hope helps.


Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -