2015-05-27 48 views
2

下面是我試圖執行的Android OpenCV的新墊的錯誤

protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    InputStream is = this.getResources().openRawResource(R.drawable.cat); 

    Bitmap footbm = BitmapFactory.decodeStream(is); 

    temp = new Mat (footbm.getHeight(),footbm.getWidth() , CvType.CV_8UC1); 
    Utils.bitmapToMat(footbm, temp); 
    Imgproc.cvtColor(temp, temp, Imgproc.COLOR_RGB2GRAY); 
    Bitmap grayBmp = Bitmap.createBitmap(footbm.getWidth(), footbm.getHeight(), Config.RGB_565); 

    Utils.matToBitmap(temp, grayBmp); 

    ImageView iv = (ImageView) findViewById(R.id.imageView1); 
    iv.setImageBitmap(grayBmp); 
} 

一塊的代碼,它給出了一個錯誤如下圖所示

沒有找到執行長org.opencv .core.Mat.n_Mat(int,int, int)(已嘗試Java_org_opencv_core_Mat_n_1Mat和 Java_org_opencv_core_Mat_n_1Mat__III)編譯成功。

我想這個錯誤是由於這個說法。

temp = new Mat (footbm.getWidth(),footbm.getHeight() , CvType.CV_8UC1); 

請建議如何繼續此操作。

回答

1

你不能在的onCreate(),因爲本機這樣的未加載尚未

移動你的代碼onCameraViewStarted執行任意代碼的OpenCV();

1
Execute your code in BaseLoaderCallback 
====================================================================== 
private BaseLoaderCallback mOpenCVCallBack = new BaseLoaderCallback(this) { 
    @Override 
    public void onManagerConnected(int status) { 
     switch (status) { 
     case LoaderCallbackInterface.SUCCESS: { 
      //your code 
     } 
      break; 
     default: { 
      super.onManagerConnected(status); 
     } 
      break; 
     } 
    } 
}; 
====================================================================== 
put this line in your onCreate 
if (!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, 
        MainActivity.this, mOpenCVCallBack)) { 
       Log.e("TEST", "Cannot connect to OpenCV Manager"); 
      }