OpenCv on Android without using OpenCv manager is not working -


am using opencv on android , when run application give me option of installing opencv manager , don't want use option application. followed this answer forum, follow steps still asking me opencv manager.

below android.mk

local_path := $(call my-dir)  include $(clear_vars)  opencv_camera_modules:=on opencv_install_modules:=on opencv_lib_type:=static include c:\opencv-2.4.10-android-sdk\sdk\native\jni\opencv.mk  local_module    := mixed_sample local_src_files := jni_part.cpp local_ldlibs +=  -llog -ldl include $(build_shared_library) 

and properties option

![project properties](/upfiles/14265260542819753.png)

i add below code crashes @override public void onresume() { super.onresume(); mloadercallback.onmanagerconnected(loadercallbackinterface.success); }

my code after static initialization

public class tutorial2activity extends activity implements cvcameraviewlistener2 {     static {         if (!opencvloader.initdebug()) {             // handle initialization error         }     }       private static final string    tag = "ocvsample::activity";      private static final int       view_mode_rgba     = 0;     private static final int       view_mode_gray     = 1;     private static final int       view_mode_canny    = 2;     private static final int       view_mode_features = 5;      private int                    mviewmode;     private mat                    mrgba;     private mat                    mintermediatemat;     private mat                    mgray;      private menuitem               mitempreviewrgba;     private menuitem               mitempreviewgray;     private menuitem               mitempreviewcanny;     private menuitem               mitempreviewfeatures;      private camerabridgeviewbase   mopencvcameraview;      private baseloadercallback  mloadercallback = new baseloadercallback(this) {         @override         public void onmanagerconnected(int status) {             switch (status) {                 case loadercallbackinterface.success:                 {                     log.i(tag, "opencv loaded successfully");                      // load native library after(!) opencv initialization                     system.loadlibrary("mixed_sample");                      mopencvcameraview.enableview();                 } break;                 default:                 {                     super.onmanagerconnected(status);                 } break;             }         }     };       public tutorial2activity() {         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.tutorial2_surface_view);          mopencvcameraview = (camerabridgeviewbase) findviewbyid(r.id.tutorial2_activity_surface_view);         mopencvcameraview.setcvcameraviewlistener(this);     } 

and on

edit

public mat oncameraframe(cvcameraviewframe inputframe) {         final int viewmode = mviewmode;         switch (viewmode) {         case view_mode_gray:             // input frame has gray scale format             imgproc.cvtcolor(inputframe.gray(), mrgba, imgproc.color_gray2rgba, 4);             break;         case view_mode_rgba:             // input frame has rbga format             mrgba = inputframe.rgba();             break;         case view_mode_canny:             // input frame has gray scale format             mrgba = inputframe.rgba();             imgproc.canny(inputframe.gray(), mintermediatemat, 80, 100);             imgproc.cvtcolor(mintermediatemat, mrgba, imgproc.color_gray2rgba, 4);             break;         case view_mode_features:             // input frame has rgba format             mrgba = inputframe.rgba();             mgray = inputframe.gray();             findfeatures(mgray.getnativeobjaddr(), mrgba.getnativeobjaddr());             break;         }          return mrgba;     }      public boolean onoptionsitemselected(menuitem item) {         log.i(tag, "called onoptionsitemselected; selected item: " + item);          if (item == mitempreviewrgba) {             mviewmode = view_mode_rgba;         } else if (item == mitempreviewgray) {             mviewmode = view_mode_gray;         } else if (item == mitempreviewcanny) {             mviewmode = view_mode_canny;         } else if (item == mitempreviewfeatures) {             mviewmode = view_mode_features;         }          return true;     }      public native void findfeatures(long mataddrgr, long mataddrrgba); 

in opencv, can async or static initialization. want static initialization. remember deprecated opencv use production, how can see here.

in accordance same link, can see android.mk correct. apparently forgot 4th step, is:

java initialization code before calling opencv api. can done, example, in static section of activity class:

static {     if (!opencvloader.initdebug()) {         // handle initialization error     } } 

if application includes other opencv-dependent native libraries should load them after opencv initialization:

static {     if (!opencvloader.initdebug()) {         // handle initialization error     } else {         system.loadlibrary("my_jni_lib1");         system.loadlibrary("my_jni_lib2");     } } 

edit 1

don't forget remove line makes asyn initialization, is:

opencvloader.initasync(opencvloader.opencv_version_2_4_3, this, mloadercallback); 

and add line:

mloadercallback.onmanagerconnected(loadercallbackinterface.success); 

ps: edit android.mk file when have project with jni part. in case of project doesn’t have jni part, should copy corresponding opencv native libs opencv-android-sdk/sdk/native/libs/ libs/ folder in project.

edit 2

to build native libs, follow instrucitions in this link

attemp last step:

either use manual ndk-build invocation or setup eclipse cdt builder build native jni lib before (re)building java part , creating apk.

that is, have run ndk-build in project root, way generated libs necessary app.


Comments

Popular posts from this blog

node.js - Mongoose: Cast to ObjectId failed for value on newly created object after setting the value -

[C++][SFML 2.2] Strange Performance Issues - Moving Mouse Lowers CPU Usage -

ios - Possible to get UIButton sizeThatFits to work? -