android opencv导入进行编译

news/2024/12/21 21:32:24/
1、直接新建module进行导入,选择opencv的sdk

导入module模式,选择下载好的sdk,修改module name为OpenCV490。

有报错直接解决报错,没报错直接运行成功。

2、解决错误,同步成功

一般报错是gradle版本问题较多。我的报错如下:

Build file 'D:\work\OpenCVJni\OpenCV480\build.gradle' line: 92A problem occurred evaluating project ':OpenCV480'.> Plugin with id 'kotlin-android' not found.

注释掉

//apply plugin: 'kotlin-android'

重新同步成功。

那就直接build,运行没再报错,就可以直接引用项目进行测试。

3、测试代码
public class MainActivity extends AppCompatActivity {private Bitmap srcBitmap = null;private Bitmap   dstBitmap = null;private ImageView imageView = null;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// opencv初始化if (!OpenCVLoader.initDebug()) {// Handle initialization errorreturn;}imageView = findViewById(R.id.imageView);srcBitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.image); // 替换为你的图片资源findViewById(R.id.load).setOnClickListener(v -> {imageView.setImageBitmap(srcBitmap);});findViewById(R.id.equalize).setOnClickListener(v -> {// 加载成功后,进行直方图均衡化操作dstBitmap = equalizeHistogram(srcBitmap);imageView.setImageBitmap(dstBitmap);});}private Bitmap equalizeHistogram(Bitmap srcBitmap) {Mat srcMat = new Mat();Mat dstMat = new Mat();Utils.bitmapToMat(srcBitmap, srcMat);// 将图片转换为灰度图Imgproc.cvtColor(srcMat, srcMat, Imgproc.COLOR_BGR2GRAY);// 将源图像的通道转换为单通道List<Mat> channels = new ArrayList<>();Core.split(srcMat, channels);// 对每个通道进行直方图均衡化Imgproc.equalizeHist(channels.get(0), channels.get(0));// 合并通道Core.merge(channels, dstMat);// 将处理后的图像转换回RGB格式Imgproc.cvtColor(dstMat, dstMat, Imgproc.COLOR_GRAY2BGR);Bitmap equalizedBitmap = Bitmap.createBitmap(dstMat.cols(), dstMat.rows(), Bitmap.Config.ARGB_8888);Utils.matToBitmap(dstMat, equalizedBitmap);// 释放资源srcMat.release();dstMat.release();return equalizedBitmap;}
}

xml布局文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat 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"android:background="@color/colorWhite"android:orientation="vertical"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="80dp"android:orientation="horizontal"><Buttonandroid:id="@+id/load"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="15dp"android:background="@color/colorPrimaryDark"android:text="加载"android:textColor="@color/colorWhite" /><Buttonandroid:id="@+id/equalize"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="15dp"android:background="@color/colorPrimaryDark"android:text="直方图均衡"android:textColor="@color/colorWhite" /></LinearLayout><FrameLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/colorWhite"><ImageViewandroid:id="@+id/imageView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginTop="20dp"android:src="@mipmap/image" /></FrameLayout></androidx.appcompat.widget.LinearLayoutCompat>

代码截图

4、运行结果

如果需要编译任意一个opencv版本搞不定的话,可以找我寻求帮助。


http://www.ppmy.cn/news/1557018.html

相关文章

信息安全管理与评估赛项任务书(模块二)

全国职业院校技能大赛 高等职业教育组 信息安全管理与评估 任务书 模块二 网络安全事件响应、数字取证调查、应用程序安全 一、比赛时间及注意事项 本阶段比赛时长为180分钟,时间为13:30-16:30。 【注意事项】 (1) 比赛结束,不得关机; (2) 选手首先需要在U盘的根目…

uni-app商品搜索页面

目录 一:功能概述 二:功能实现 一:功能概述 商品搜索页面,可以根据商品品牌,商品分类,商品价格等信息实现商品搜索和列表展示。 二:功能实现 1:商品搜索数据 <view class="search-map padding-main bg-base"> <view class…

Vscode搭建C语言多文件开发环境

一、文章内容简介 本文介绍了 “Vscode搭建C语言多文件开发环境”需要用到的软件&#xff0c;以及vscode必备插件&#xff0c;最后多文件编译时tasks.json文件和launch.json文件的配置。即目录顺序。由于内容较多&#xff0c;建议大家在阅读时使用电脑阅读&#xff0c;按照目录…

联合目标检测与图像分类提升数据不平衡场景下的准确率

联合目标检测与图像分类提升数据不平衡场景下的准确率 在一些数据不平衡的场景下&#xff0c;使用单一的目标检测模型很难达到99%的准确率。为了优化这一问题&#xff0c;适当将其拆解为目标检测模型和图像分类模型的组合&#xff0c;可以更有效地控制最终效果&#xff0c;尤其…

Python面试常见问题及答案10

1. 问题&#xff1a;如何在Python中对列表进行排序&#xff1f; 答案&#xff1a; 可以使用列表的sort()方法&#xff0c;它会直接修改原始列表。例如&#xff1a; my_list [3, 1, 4, 1, 5, 9, 2, 6, 5, 3] my_list.sort() print(my_list)也可以使用sorted()函数&#xff0c…

Python 写的 《监控视频存储计算器》

代码&#xff1a; import tkinter as tk from tkinter import ttk import math from tkinter.font import Fontclass StorageCalculator:def __init__(self, root):self.root rootself.root.title("监控视频存储计算器")self.root.geometry("600x800")s…

01背包:模板题+实战题

一、01背包的定义 我们有一个背包&#xff0c;背包的容积有限&#xff0c;最多只能装下总体积为V的物品。现在给定我们N个物品&#xff0c;第i个物品的体积vi&#xff0c;对应的价值是wi&#xff08; 1 ≤ i ≤ N 1 \leq i \leq N 1≤i≤N&#xff09;。每个物品有且仅有一个。…

【JavaWeb】Ajax

目录 一、什么是Ajax&#xff1f; 二、同步与异步 三、Ajax工作原理 四、Ajax实现步骤 五、Ajax应用场景 六、Ajax常见问题 1.缓存问题 2.跨域问题 3.请求超时与网络异常 4.取消请求 七、常见Ajax三种请求方式 1.jQuery请求 2.Axios请求 3.Fetch请求 一、什么是A…