Android Studio集成OpenCV,全网最保姆级教程

种地  金牌会员 | 2024-11-14 06:14:44 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 930|帖子 930|积分 2790

一、Android Studio引入OpenCV

        1、创建一个新工程 File→New Project→Empty Activity,然后Finish进行创建

      
       创建工程        2、查验工程是否能正常运行,假如正常运行,则跳过此步


 

 

3、 下载NDK,集成OpenCV须要用到


 4、引入openCv,File→New→Import Module,选择你下载解压之后的OpenCV-android-sdk\sdk(注意解压的文件夹,不要有中文,不要放的太深,避免导入模块出错),然后Finish,此处使用的是opencv-4.5.2-android-sdk,须要的可自取。

链接: https://pan.baidu.com/s/1VufrqPXOzviEy63nZ6pNqQ 提取码: ancv

5、设置引入的OpenCV的设置文件


      
       同步完成后,有报错不消理会,关闭即可       6、把引入的OpenCV包添加到app项目里,打启发包界面,File→Project Struture,然后按照下面的步调导包,最后apply即可






 7、添加OpenCV的.so动态链接库文件。在你解压的OpenCV文件中,进入到OpenCV-android-sdk\sdk\native\libs文件夹下



8、在app的gradle设置文件中,加入如下的声明,定义引入的OpenCV的.so动态链接库文件,然后sync now,同步一下


9、最后,启动项目看设置是否乐成,如若乐成,则有如下提示


二、实例演示

1、代码实现,activity_main.xml代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3.     xmlns:android="http://schemas.android.com/apk/res/android"
  4.     android:layout_width="match_parent"
  5.     android:layout_height="wrap_content"
  6.     android:orientation="vertical">
  7.     <Button
  8.         android:id="@+id/button"
  9.         android:text="灰度化"
  10.         android:layout_width="match_parent"
  11.         android:layout_height="wrap_content">
  12.     </Button>
  13.     <ImageView
  14.         android:id="@+id/image"
  15.         android:layout_width="match_parent"
  16.         android:layout_height="wrap_content">
  17.     </ImageView>
  18. </LinearLayout>
复制代码
2、activity_main.java代码

  1. import androidx.appcompat.app.AppCompatActivity;
  2. import android.graphics.Bitmap;
  3. import android.graphics.BitmapFactory;
  4. import android.os.Bundle;
  5. import android.util.Log;
  6. import android.view.View;
  7. import android.widget.Button;
  8. import android.widget.ImageView;
  9. import org.opencv.android.OpenCVLoader;
  10. import org.opencv.android.Utils;
  11. import org.opencv.core.CvType;
  12. import org.opencv.core.Mat;
  13. import org.opencv.imgproc.Imgproc;
  14. public class MainActivity extends AppCompatActivity {
  15.     private Button garyButton; // 灰度化启动按钮
  16.     private Bitmap oriBitmap, garyBitmap; // oriBitmap:原图;garyBitmap:灰度化图
  17.     private ImageView imageView;// 图片组件
  18.     @Override
  19.     protected void onCreate(Bundle savedInstanceState) {
  20.         super.onCreate(savedInstanceState);
  21.         setContentView(R.layout.activity_main);
  22.         // 导入视图文件
  23.         imageView = findViewById(R.id.image);
  24.         oriBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.yaya);
  25.         imageView.setImageBitmap(oriBitmap);
  26.         // 按钮监听事件
  27.         garyButton = findViewById(R.id.button);
  28.         garyButton.setOnClickListener(new View.OnClickListener() {
  29.             @Override
  30.             public void onClick(View view) {
  31.                 // 实现图片灰度化
  32.                 garyImage(oriBitmap);
  33.             }
  34.         });
  35.     }
  36.     /**
  37.      * 实现图片灰度化
  38.      *
  39.      * @param bitmap 位图
  40.      */
  41.     protected void garyImage(Bitmap bitmap) {
  42.         Mat mat = new Mat(bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC3);
  43.         Utils.bitmapToMat(bitmap, mat);
  44.         garyBitmap = Bitmap.createBitmap(mat.width(), mat.height(), Bitmap.Config.ARGB_8888);
  45.         Imgproc.cvtColor(mat, mat, Imgproc.COLOR_BGR2GRAY);
  46.         Utils.matToBitmap(mat, garyBitmap);
  47.         imageView.setImageBitmap(garyBitmap);
  48.     }
  49.     protected void onResume() {
  50.         super.onResume();
  51.         if (!OpenCVLoader.initDebug()) {
  52.             Log.d("openCv", "openCv加载失败...");
  53.         }else {
  54.             Log.d("openCv", "openCv加载成功...");
  55.         }
  56.     }
  57. }
复制代码
3、实现结果

   
     原图      
     转换之后图片     
三、 总结:

        翻阅了大量资料,耗费了很多时间才自我集成乐成,故有感而发,盼望本博文能帮助想要使用android studio集成OpenCV的朋侪,减少集成的时间。如博文哪里有题目,盼望各位大佬斧正。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

种地

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表