Mat错误 - "遗憾的是,该应用无法加载"在android中

时间:2014-03-15 08:00:11

标签: java android opencv

我正在运行一个用于canny边缘检测的java脚本,当我在程序中的任何地方使用关键字Mat,甚至其他Mat变量时,应用程序都没有加载。我该如何解决这个问题。

我使用的代码如下。

public class MainActivity extends Activity {
    Mat m;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final MediaPlayer mpButtonClick = MediaPlayer.create(this, R.raw.button_click);
        final String    TAG             = "OCVSample::Activity";

        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;
                }
            }
       };
       ImageView imageSource=null,imageAfter = null; 
       Bitmap source=null,result = null;
       imageSource = (ImageView)findViewById(R.id.imageView1);
       source=BitmapFactory.decodeResource(getResources(), R.drawable.strips1);
       Mat matSource = null;
       // Handle initialization error
       Utils.bitmapToMat(source, matSource);
       Mat matResult = null;
       Imgproc.Canny(matSource, matResult, 80, 90);
       Utils.matToBitmap(matResult,result);
       imageAfter.setImageBitmap(result);

1 个答案:

答案 0 :(得分:0)

你只能在 BaseLoaderCallback完成后使用opencv代码(并加载了dll' s / so')

所以,在onCreate中执行Canny代码不会起作用(这太早了)。

在LoaderCallbackInterface.SUCCESS之后移动它:或者移动到onCameraViewStarted()或类似的

(顺便说一句,在你的可怕的格式代码上应用了一些工作之后,这才变得明显......)