如何使用Android studio3.6的java api方式调用opencv

  介绍

这篇文章将为大家详细讲解有关如何使用Android studio3.6的java api方式调用opencv,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Android是什么

Android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国谷歌公司和开放手机联盟领导及开发。

基本环境:Android studio3.6

NDK: r15c(尽量使用该版本)

Opencv3.4.1 Android sdk

操作:

(1)新建工程,选择空活动,工程名为op

(2)文件→新建→导入模块,然后选择自己的java-opencv的相对应路径,比如,D: \ Android sdk \ OpenCV-android-sdk \ \ java

(3)修改openCVlibrary341下面的build.gradle中的,compileSdkVersion, buildToolsVersion, minSdkVersion, targetSdkVersion,使得和自己的工程下面的app/build.gradle的版本一致。

(4)修改openCVlibrary341下面的<代码> src/中主要的AndroidManifest.xml中的minSdkVersion, targetSdkVersion,使得和自己的工程下面的app/build.gradle的版本一致。

(5)应用程序/src/main/res/可拉的下面增加一张图片

如何使用Android studio3.6的java api方式调用opencv

(6)应用程序/src/main/res/布局中修改布局文件<代码> activity_main。xml代码

如何使用Android studio3.6的java api方式调用opencv

& lt; RelativeLayout  xmlns: Android=癶ttp://schemas.android.com/apk/res/android"   ,xmlns:工具=癶ttp://schemas.android.com/tools"   ,android: layout_width=癿atch_parent"   ,android: layout_height=癿atch_parent"   ,工具:上下文=?MainActivity",比;   & lt; ImageView   android:才能id=癅 + id/img"   android:才能layout_width=皐rap_content"   android:才能layout_height=皐rap_content"   android:才能背景=癅drawable/dilireba"   android:才能layout_centerInParent=皌rue"/比;   & lt;按钮   android:才能id=癅 + id/btn_gray_process"   android:才能layout_width=皐rap_content"   android:才能layout_height=皐rap_content"   android:才能layout_below=癅 id/img"   android:才能layout_centerHorizontal=皌rue"   android才能:文本=盎叶然?祝辞;“   & lt;/RelativeLayout>

(7)修改程序/src/main/java com . example。/op下面的MainActivity

package  com.example.op;   import  androidx.appcompat.app.AppCompatActivity;   import  android.graphics.Bitmap;   import  android.graphics.BitmapFactory;   import  android.os.Bundle;   import  android.util.Log;   import  android.view.View;   import  android.widget.Button;   import  android.widget.ImageView;   import  org.opencv.android.BaseLoaderCallback;   import  org.opencv.android.OpenCVLoader;   import  org.opencv.android.Utils;   import  org.opencv.core.Mat;   import  org.opencv.imgproc.Imgproc;   public  class  MainActivity  extends  AppCompatActivity  {   ,Button  btnProcess;   ,Bitmap  srcBitmap;   ,Bitmap  grayBitmap;   ,ImageView  img;   ,private  static  boolean  flag =,真的;   ,private  static  boolean  isFirst =,真的;   ,private  static  final  String  TAG =,“MainActivity";   ,private  BaseLoaderCallback  mLoaderCallback =, new  BaseLoaderCallback(这),{   @Override才能   public 才能;void  onManagerConnected (int 状态),{   ,,//,TODO  Auto-generated  method 存根   ,,switch (状态){   ,,,case  BaseLoaderCallback.SUCCESS:   ,,,,Log.i(标签,,“baseloader  success");   ,,,,休息;   ,,,默认值:   ,,,,super.onManagerConnected(状态);   ,,,,Log.i(标签,String.valueOf(状态);   ,,,,休息;   ,,}   ,,}   ,};   ,@Override   ,protected  void  onCreate (Bundle  savedInstanceState), {   super.onCreate才能(savedInstanceState);   ,,setContentView (R.layout.activity_main);   btnProcess 才能=,(按钮)findViewById (R.id.btn_gray_process);   img 才能=,(ImageView) findViewById (R.id.img);   Log.i才能(标签,,“initUI 成功…“);   btnProcess.setOnClickListener才能(new  ProcessClickListener ());   ,}   ,public  void  procSrc2Gray () {   Mat 才能;rgbMat =, new 垫();   Mat 才能;grayMat =, new 垫();   时间=srcBitmap 才能;BitmapFactory.decodeResource (getresource (),, R.drawable.dilireba);   时间=grayBitmap 才能;Bitmap.createBitmap (srcBitmap.getWidth (),, srcBitmap.getHeight (),, Bitmap.Config.ARGB_8888);   Utils.bitmapToMat才能(srcBitmap, rgbMat);//convert  original  bitmap 用垫,R  G  B。   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何使用Android studio3.6的java api方式调用opencv