java.lang.UnsatisfiedLinkError:找不到本机方法:

时间:2016-11-29 18:18:44

标签: java android c++ opencv

我尝试使用opencv库在android studio上进行色彩空间转换。但是我有一个错误。

我的主要活动;

package com.example.alper.son;

In [21]: df.groupby('id')['color'].apply(lambda x: x.tolist()).reset_index()
Out[21]:
   id                  color
0   1    [red, blue, yellow]
1   2         [green, black]
2   3  [yellow, white, blue]

我的本​​地课程;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.CvType;
import org.opencv.core.Mat;

public class MainActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2{
    private static String TAG ="MainActivity";

    private CameraBridgeViewBase cameramaneger;
    Mat mRgba , mGray;
static {System.loadLibrary("MyLibs");}

    private BaseLoaderCallback baseLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            cameramaneger.enableView();
        }
    };



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (OpenCVLoader.initDebug()){
            OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this,baseLoaderCallback );
            Log.i(TAG, "işlem tamam");



        }
        cameramaneger = (CameraBridgeViewBase) findViewById(R.id.java_camera_view);
        cameramaneger.setVisibility(View.VISIBLE);
        cameramaneger.setCvCameraViewListener(this);
        cameramaneger.setCameraIndex(0);


    }
    static {System.loadLibrary("MyLibs");}

    @Override
    public void onCameraViewStarted(int width, int height) {
        mRgba=new Mat(height,width, CvType.CV_8UC4);
        mGray=new Mat(height,width,CvType.CV_8UC1);

    }

    @Override
    public void onCameraViewStopped() {

    }

    @Override
    public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
        mRgba=inputFrame.rgba();

       AClass.ConvGray(mRgba.getNativeObjAddr(),mGray.getNativeObjAddr());
        return mGray;
        //  return inputFrame.rgba();
    }
}

ændroid。 MK; LOCAL_PATH:= $(调用my-dir)

package com.example.alper.son;

/**
 * Created by alper on 29.11.2016.
 */

public class AClass {
    public native static int ConvGray (long mAddrRgba ,long mAddrGray);
}

的OpenCV

include $(CLEAR_VARS)

LOCAL_SRC_FILES :=com_example_alper_asd_AsdClass.cpp

Application.mk;

OPENCVROOT:= C:\OpenCV-2.4.9-android-sdk
    OPENCV_CAMERA_MODULES:=on
    OPENCV_INSTALL_MODULES:=on
    OPENCV_LIB_TYPE:=SHARED
    include ${OPENCVROOT}/sdk/native/jni/OpenCV.mk
    LOCAL_LDLIBS += -llog
    LOCAL_MODULE := MyLibs


    include $(BUILD_SHARED_LIBRARY)

.cpp代码;

APP_STL := gnustl_static
    APP_CPPFLAGS := -frtti -fexceptions
    APP_ABI := x86 armeabi armeabi-v7a mips
    APP_PLATFORM := android-16

我的错误;

#include <com_example_alper_son_AClass.h>

JNIEXPORT jint JNICALL Java_com_example_alper_son_AClass_ConvGray
  (JNIEnv *, jclass, jlong mAddrRgba, jlong mAddrGray){

  Mat &mRgba= *(Mat*)mAddrRgba;
  Mat &mGray= *(Mat*)mAddrGary;
  long conv;
  jint retval;
  conv = toGray (mRgba ,mGray);
  retval = (jint)conv;
  return retval;

    }
  long togray (Mat img, Mat &Gray){
  cvtColor(img, gray, CV_RGB2Lab);
      if (gray.rows == img.rows && gray.cols == img.cols)
          return 1;
      return 0;


  }
  }

0 个答案:

没有答案