ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Android Studio集成OpenCV,全网最保姆级教程
[打印本页]
作者:
种地
时间:
2024-11-14 06:14
标题:
Android Studio集成OpenCV,全网最保姆级教程
一、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代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<Button
android:id="@+id/button"
android:text="灰度化"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</Button>
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</ImageView>
</LinearLayout>
复制代码
2、activity_main.java代码
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.OpenCVLoader;
import org.opencv.android.Utils;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.imgproc.Imgproc;
public class MainActivity extends AppCompatActivity {
private Button garyButton; // 灰度化启动按钮
private Bitmap oriBitmap, garyBitmap; // oriBitmap:原图;garyBitmap:灰度化图
private ImageView imageView;// 图片组件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 导入视图文件
imageView = findViewById(R.id.image);
oriBitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.yaya);
imageView.setImageBitmap(oriBitmap);
// 按钮监听事件
garyButton = findViewById(R.id.button);
garyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// 实现图片灰度化
garyImage(oriBitmap);
}
});
}
/**
* 实现图片灰度化
*
* @param bitmap 位图
*/
protected void garyImage(Bitmap bitmap) {
Mat mat = new Mat(bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC3);
Utils.bitmapToMat(bitmap, mat);
garyBitmap = Bitmap.createBitmap(mat.width(), mat.height(), Bitmap.Config.ARGB_8888);
Imgproc.cvtColor(mat, mat, Imgproc.COLOR_BGR2GRAY);
Utils.matToBitmap(mat, garyBitmap);
imageView.setImageBitmap(garyBitmap);
}
protected void onResume() {
super.onResume();
if (!OpenCVLoader.initDebug()) {
Log.d("openCv", "openCv加载失败...");
}else {
Log.d("openCv", "openCv加载成功...");
}
}
}
复制代码
3、实现结果
原图
转换之后图片
三、 总结:
翻阅了大量资料,耗费了很多时间才自我集成乐成,故有感而发,盼望本博文能帮助想要使用android studio集成OpenCV的朋侪,减少集成的时间。如博文哪里有题目,盼望各位大佬斧正。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4