0

I use OpenCV on Android and i don't understand why i can't instantiate a simple Mat. I think I don't do right implementation of OpenCV with the BaseLoaderCallback.

public class MainActivity extends Activity {

private final String TAG = "Main activity";

private BaseLoaderCallback mOpenCVCallBack = new BaseLoaderCallback(this) {
    @Override
    public void onManagerConnected(int status) {
       switch (status) {
           case LoaderCallbackInterface.SUCCESS:
           {
          Log.i(TAG, "OpenCV loaded successfully");             
            setContentView(R.layout.activity_main);
           //Mat image = new Mat(); // <--- problem here
           } break;
           default:
           {
          super.onManagerConnected(status);
           } break;
       }
    }
};

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

    public void onResume()
    {
        super.onResume();
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mOpenCVCallBack);
    }

My LogCat is only a FatalSignal 11 (SIGSEV).

EDIT : After many modifications, this is now works and i don't know why but thanks.

1
  • Try making the Mat variable global. Commented May 15, 2013 at 20:10

1 Answer 1

1

Try this piece of code:

Mat m; private static final String TAG = "OCVSample::Activity";

  private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
    switch (status) {
        case LoaderCallbackInterface.SUCCESS:
        {
            Log.i(TAG, "OpenCV loaded successfully");
            m=new Mat();
        } break;
        default:
        {
            super.onManagerConnected(status);
        } break;
    }
}
};

OpenCV functions such as Mat have to be invoked in either a thread or AsyncTask or from within an OpenCV function.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.