Android Studio 配置OpenCV4.4.0 不用安装OpenCV Manager (泪崩居然用了礼拜天2天的时间居然还没配置成功,今天又看了下配置成功了)

Android Studio 配置OpenCV4.4.0 ,说来惭愧居然用户礼拜天2天的时间呢,期间遇到的问题大致有4个问题

这里我也总结出了最后在列举出来,(可能是新版和之前旧版本不一样的问题按照网上的配置运行总是报错)

这里默认我们的电脑上安装的有android studio 并且配置好了ndk 环境。

如果ndk 没有配置可以点击查看ndk 环境配置

1 首先到OpenCV 官网上点击Releases 下载 库文件

点击直接跳转到releases 跳转

点击进去点击Releases

然后我们在OpenCV4.4.0 选中android

下载之后打开目录是这样的

samples 里面 是官方的demo 

sdk 是我们要使用的库

 

下载之后,我们新建一个demo,然后把sdk 导入进入,这里啰嗦下网上的教程是导入sdk 里面的java并吧java文件改成库 然后在新建一个jniLibs,之后再把sdk\native\libs 里面的包放进入,最后在gradle 中配置下,然后配置好之后运行也没有问题但是调用的时候报错呢问题也是百度了2天没有处理好,最后打开了sdk 里面的build.gradle 看下配置这个sdk 本身就是一个库,为啥网上非要进入sdk里面的java,然后在修改成库,最后自己想着直接引入sdk 试试看运行成功了

啰嗦了一会,这个可能是版本的问题之前的人都成功了,现在OpenCV4.4.0 人家优化了不用这么麻烦了

在新建的项目中引入库sdk

File --- new -- Import Module

之后就是

加载一会就好了,加载之后的效果图如下

接着就是验证是否可以了在onResume 写入OpenCVLoader.initDebug() 具体如下

if (OpenCVLoader.initDebug()) {
            Log.d(TAG, "OpenCV library found inside package. Using it!");
        } else {
            Log.d(TAG, "Internal OpenCV library not found. Using OpenCV Manager for initialization");
        }

之后就是看打印结果了

ok 到这里我们就配置完了, 说白了就是一个库我们下载好了,然后引入到项目这样就好了,居然弄了2天,太难了

下面写一个是图片边灰色的demo 试试OpenCV

 具体效果如下图

布局代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity">

    <ImageView
            android:id="@+id/img"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:scaleType="fitXY" />

    <Button
            android:id="@+id/btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="点击变为灰色图片"/>

</LinearLayout>

java 代码

public class MainActivity extends AppCompatActivity {
    private final String TAG = "MainActivity";
    private ImageView imageView;
    private Button button;

    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch (status) {
                case LoaderCallbackInterface.SUCCESS: {
                    Log.i(TAG, "OpenCV loaded successfully");
                }
                break;
                default: {
                    super.onManagerConnected(status);
                }
                break;
            }
        }
    };

    @Override
    public void onResume() {
        super.onResume();
        if (OpenCVLoader.initDebug()) {
            Log.d(TAG, "OpenCV library found inside package. Using it!");
            mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
        } else {
            Log.d(TAG,
                    "Internal OpenCV library not found. Using OpenCV Manager for initialization");
            OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION, this, mLoaderCallback);
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView = findViewById(R.id.img);
        button = findViewById(R.id.btn);
        final Bitmap bitmap =
                ((BitmapDrawable) getResources().getDrawable(R.mipmap.image)).getBitmap();
        imageView.setImageBitmap(bitmap);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Bitmap grayBitmap = toGrayByOpencv(bitmap);
                imageView.setImageBitmap(grayBitmap);
            }
        });
    }
    
    public Bitmap toGrayByOpencv(Bitmap srcBitmap) {
        Mat mat = new Mat();
        Utils.bitmapToMat(srcBitmap, mat);
        Mat grayMat = new Mat();
        Imgproc.cvtColor(mat, grayMat, Imgproc.COLOR_BGRA2GRAY, 1);
        Utils.matToBitmap(grayMat, srcBitmap);
        return srcBitmap;
    }

}

ok 到此终于完成了,由于 配置的问题 出现的几个问题这里列举出来

1 OpenCV error: Cannot load info library for OpenCV

2  运行是弹框提示安装OpenCV Manager  :

OpenCV Manager package was not found Try to install it?

弹框如下

3  黄色警告libc++_shared.so" not found :

System.err: java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found

安装上面的配置之后三个问题就不再提示了

 

如果安装上面的配置失败了可以下载demo看看效果

demo 地址点击查看

 

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值