Android上的OpenCV初始化问题

时间:2013-05-15 13:22:53

标签: android opencv

我在Android上使用OpenCV,我不明白为什么我无法实例化一个简单的Mat。我认为我没有使用BaseLoaderCallback正确实现OpenCV。

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);
    }

我的LogCat只是一个FatalSignal 11(SIGSEV)。

编辑:经过多次修改后,现在可行了,我不知道为什么,但谢谢。

1 个答案:

答案 0 :(得分:1)

试试这段代码:

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;
    }
}
};

Mat等OpenCV函数必须在threadAsyncTask中或在OpenCV函数中调用。