Android使用OpenCV 4.3.0

基础使用
  • 进入 https://opencv.org/releases 官网下载4.3.0 opencv-4.3.0-android-sdk.zip
  • 解压zip文件
  • 打开Android Studio工程,选则import Module,然后文件夹指向OpenCV-android-sdk文件夹下都sdk文件夹,然后直接导入
  • 导入完成后,在项目中添加依赖即可使用
快捷使用
  • 上述官方使用比较麻烦,下载等等,所以我把这个通过jitpack使得使用更加方便快捷
  • 使用方法
    1. Add it in your root build.gradle at the end of repositories:
      allprojects {
      	repositories {
              	...
          	maven { url 'https://jitpack.io' }
      	}
      }
      
    2. Add the dependency
      dependencies {
          implementation 'com.github.zhu260824:OpenCV:4.3.0'
      }
      
  • 代码中使用
    1. 初始化OpenCV
      public static void init(Context mContext) {
          BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(mContext) {
          @Override
          public void onManagerConnected(int status) {
              super.onManagerConnected(status);
              switch (status) {
                  case LoaderCallbackInterface.SUCCESS:
                      break;
                  default:
                      super.onManagerConnected(status);
                      break;
                  }
              }
          };
          if (!OpenCVLoader.initDebug()) {
              Log.d("OpenCV", "Internal OpenCV library not found. Using OpenCV Manager for initialization");
              OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION, mContext, mLoaderCallback);
          } else {
              Log.d("OpenCV", "OpenCV library found inside package. Using it!");
              mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
          }
      }
      
    2. 使用OpenCV
      /**
       * 使用openCV生成灰度图片
       * @param src 原图
       * @return 灰度图
       */
      public static Bitmap bitmap2Gray(Bitmap src) {
          Mat mat_src = new Mat(src.getWidth(), src.getHeight(), CvType.CV_8UC4);
          Utils.bitmapToMat(src, mat_src);
          Mat mat_gray = new Mat(src.getWidth(), src.getHeight(), CvType.CV_8UC1);
          Imgproc.cvtColor(mat_src, mat_gray, Imgproc.COLOR_BGRA2GRAY, 1);
          Bitmap dst = Bitmap.createBitmap(mat_gray.cols(), mat_gray.rows(), Bitmap.Config.ARGB_8888);
          Utils.matToBitmap(mat_gray, dst);
          return dst;
      }
      
  • 根据使用设备减少so包,缩小apk大小
    android {
        ...
        defaultConfig {
           ...
            ndk {
                abiFilters "armeabi-v7a", "arm64-v8a" //, "x86", "x86_64"
            }
        }
    }
    
    x86和x86_64架构的so文件都比较大,大概有50M,最好在使用的时候都添加一下
代码
总结
  • 整个就是官方项目都copy,但是经过我这样,使得使用起来更简单,同时减少了应为环境问题导致编译错误都出现。使得大家可以更快都使用OpenCV.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值