【问题标题】:Android opencv new mat errorAndroid opencv new mat错误
【发布时间】:2015-08-09 12:44:51
【问题描述】:

以下是我正在尝试执行的一段代码

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

它给出了如下所示的错误

没有找到 long 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);

请建议如何进行此操作。

【问题讨论】:

    标签: android opencv mat


    【解决方案1】:

    您无法在 onCreate() 中执行任何 opencv 代码,因为尚未加载原生 so

    将您的代码移动到 onCameraViewStarted();

    【讨论】:

      【解决方案2】:
      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");
                  }
      

      【讨论】:

        猜你喜欢
        • 2016-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多