这篇文章将为大家详细讲解有关如何使用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/可拉的下面增加一张图片
(6)应用程序/src/main/res/布局中修改布局文件<代码> activity_main。xml代码>
& 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