Android集成OpenCV及简单使用

先说一下我所用的环境
开发工具:Android stuido
OpenCV版本:3.1

集成:

第一步:先下载OpenCV SDK,OpenCV SDK解压后的文件目录如下:

第二步:将OpenCV通过添加依赖的方式集成到项目
方法:File –> New –> Import Module 然后选择OpenCV目录下sdk中的java进行引入就行。
再将sdk目录下的Libs文件添加到工程(放到main目录下),并且将其重命名,命名为JniLibs

第三步:修改你引入的OpenCV中gradle的配置,要求和你的项目是一致的,具体修改位置如下:
这里写图片描述
修改完后记得跟新一下项目ReBuild Project(就是重构一下);

第四步:为你的手机或者模拟器安装OpenCV Manager
其实就是OpenCV SDK 解压目录下apk中的apk文件,如下:
这里写图片描述
将v7a的那个安装到手机上就好,如果在接下来图片处理的操作,或者是在你安装v7a这个apk是出错,那么请你换个apk进行安装具体那个能用因手机而异。

到这里OpenCV 集成到Android的操作已经完成,下面是对图片的一个简单处理(灰度化)。

使用:

第一步:
初始化加载OpenCV,代码如下:

 @Override
    protected void onResume() {
        super.onResume();
        //初始化OpenCV
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_1_0, this, new BaseLoaderCallback(this) {
            @Override
            public void onManagerConnected(int status) {
                switch (status) {
                    case BaseLoaderCallback.SUCCESS:
                        Log.i(TAG, "成功加载");
                        break;
                    default:
                        super.onManagerConnected(status);
                        Log.i(TAG, "加载失败");
                        break;
                }
            }
        });
    }

 - 列表内容

初始化加载的中有三个参数,这里解释一下他们的含义
参数一:你所使用的OpenCV的版本号
参数二:上下文
参数三:加载操作的回调接口

补充:
在集成中的第四步,我们需要安装OpenCV Manager
这里介绍一个不需要安装OpenCV Manager就可使用OpenCV 的方法,方法也很简单,就是将上一步中的代码替换成以下代码就可了,如下:

 //OpenCV库是否加载成功的回调接口
        mLoaderCallback = new BaseLoaderCallback(this) {
            @Override
            public void onManagerConnected(int status) {
                switch (status) {
                    case BaseLoaderCallback.SUCCESS:
                        Log.i(TAG, "成功加载");
                        break;
                    default:
                        super.onManagerConnected(status);
                        Log.i(TAG, "加载失败");
                        break;
                }
            }
        };

        //这种写法可以免安装OpenCV Manager(这也是官方示例代码的写法)
        if (!OpenCVLoader.initDebug()) {
            Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");
            OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_1_0, this, mLoaderCallback);
        } else {
            Log.d(TAG, "OpenCV library found inside package. Using it!");
            mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
        }

这种写法我也是刚知道,在这里作为补充项介绍给大家。

第二步:
获取Bitmap对象,然后将其灰度化,代码如下:

 /**
     * 进行图片灰度化
     */
    public void getGrayBitmap() {
        Mat rgbMat = new Mat();
        Mat grayMat = new Mat();
        //从资源文件中获取图片
        srcBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.bsl);
        //获取一个空的Bitmap对象,用于接受接下来灰度化后的Bitmap
        grayBitmap = Bitmap.createBitmap(srcBitmap.getWidth(), srcBitmap.getHeight(), Bitmap.Config.RGB_565);
        //对Bitmap进行转化,将其转换成mat
        Utils.bitmapToMat(srcBitmap, rgbMat);
        //对mat进行灰度化处理,灰度化后的mat为grayMat
        Imgproc.cvtColor(rgbMat, grayMat, Imgproc.COLOR_RGB2GRAY);
        //将灰度化后的mat转换为Bitmap
        Utils.matToBitmap(grayMat, grayBitmap);
    }

第三步:
对灰度化后的Bitmap做进一步的操作,比如让他显示在界面上,效果图如下:
原图
灰度化

大家不要被图片中tab栏中的其他描述所误导,我其实就只实现了一个灰度化而已,其他功能有待研究。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值