Android Studio配置OpenCV
程序员文章站
2022-06-16 13:25:56
Android Studio导入OpenCV1、准备环境安装好Android Studio软件下载好opencv-4.3.0-android-sdk.zip2、新建工程双击打开Android Studio点击红色方框创建新工程选择Empty Activity创建Name自己定,下面两项会自动同步language选择Java如图所示为创建完成状态。3、导入opencv首先将之前准备的opencv解压出来并且记住目录,我的目录为D盘在Android Studio中点击File-&...
Android Studio导入OpenCV
1、准备环境
安装好Android Studio软件
下载好opencv-4.3.0-android-sdk.zip
2、新建工程
双击打开Android Studio点击红色方框创建新工程
选择Empty Activity创建
Name自己定,下面两项会自动同步language选择Java
如图所示为创建完成状态。
3、导入opencv
首先将之前准备的opencv解压出来并且记住目录,我的目录为D盘
在Android Studio中点击File->Import Module…
选择opencv软件支持包,(该目录为之前opencv解压文件位置下)
完成之后你会发现工程里多了SDK如图所示。
然后在Android Studio中点击File->Project Structure… 按以下操作添加sdk
添加完成后,再修改build.gradle,将sdk的minSdkVersion和targetSdkVersion设置和app中的一样
最后把opencv-4.3.0-android-sdk文件夹下的libs文件夹拷贝到自己的安卓项目下D:\OpenCvText\app\src\main,并且将libs改名为jniLibs
往drawable文件夹中加入一张lena.jpg图片
activity_main.xml文件改成如下所示
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/process_btn"
android:text="灰度"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitCenter"
android:id="@+id/sample_img"
android:src="@drawable/lena"
android:layout_centerInParent="true"/>
</RelativeLayout>
MainActivity.java文件改成如下所示
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button processBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iniLoadOpenCV();
processBtn = (Button)this.findViewById(R.id.process_btn);
processBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Mat src = new Mat();
Mat dst = new Mat();
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),R.drawable.lena);
ImageView iv = (ImageView)this.findViewById(R.id.sample_img);
src = new Mat(bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC(3));
Utils.bitmapToMat(bitmap,src);
if(processBtn.getText().equals("灰度"))
{
Imgproc.cvtColor(src,dst,Imgproc.COLOR_BGR2GRAY);
Utils.matToBitmap(dst,bitmap);
iv.setImageBitmap(bitmap);
processBtn.setText("正常");
}
else
{
iv.setImageBitmap(bitmap);
processBtn.setText("灰度");
}
//释放内存
src.release();
dst.release();
}
//初始化
private void iniLoadOpenCV(){
boolean success=OpenCVLoader.initDebug();
if(success){
//Log.i(CV_TAG,"OpenCV Libraries loaded...");
}
else{
Toast.makeText(this.getApplicationContext(),"WARNING:Could not load OpenCV Libraries!",Toast.LENGTH_LONG).show();
}
}
}
运行如下图所示,点击灰度按钮,图片灰度化处理并显示,按钮文字变成“正常”,再次点击,显示原图,按钮文字显示“灰度”
本文地址:https://blog.csdn.net/qq_39261042/article/details/109612179