0

我在 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)。

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

4

1 回答 1

1

试试这段代码:

垫米;私有静态最终字符串 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 函数,例如Mat必须在 OpenCV 函数中调用threadAsyncTask从 OpenCV 函数中调用。

于 2013-05-15T20:14:27.003 回答