基础使用
- 进入 https://opencv.org/releases 官网下载4.3.0 opencv-4.3.0-android-sdk.zip
- 解压zip文件
- 打开Android Studio工程,选则import Module,然后文件夹指向OpenCV-android-sdk文件夹下都sdk文件夹,然后直接导入
- 导入完成后,在项目中添加依赖即可使用
快捷使用
- 上述官方使用比较麻烦,下载等等,所以我把这个通过jitpack使得使用更加方便快捷
- 使用方法
- Add it in your root build.gradle at the end of repositories:
allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
- Add the dependency
dependencies { implementation 'com.github.zhu260824:OpenCV:4.3.0' }
- Add it in your root build.gradle at the end of repositories:
- 代码中使用
- 初始化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); } }
- 使用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; }
- 初始化OpenCV
- 根据使用设备减少so包,缩小apk大小
x86和x86_64架构的so文件都比较大,大概有50M,最好在使用的时候都添加一下android { ... defaultConfig { ... ndk { abiFilters "armeabi-v7a", "arm64-v8a" //, "x86", "x86_64" } } }
代码
- GitHub
- Gitee
总结
- 整个就是官方项目都copy,但是经过我这样,使得使用起来更简单,同时减少了应为环境问题导致编译错误都出现。使得大家可以更快都使用OpenCV.