当前位置: 首页 > news >正文

android 和 opencv 开发环境搭建

本文详细说明给android项目添加opencv库的详细步骤,并通过实现图片灰度化来查看配置是否成功。

下载OPENCV ANDROID SDK

到官网下载
打开 https://opencv.org/releases/

请添加图片描述
选择android,下载完成后解压出下面的文件:

请添加图片描述

安装android sdk 和 ndk

在Android studio中打开sdk管理器即可下载:
在这里插入图片描述

新建C++工程

打开Android studio,选择模板,这时选择最后一项Native C++,然后进入配置界面。

请添加图片描述配置项目

请添加图片描述选择C++14
请添加图片描述

配置OpenCV库

OpenCV库作为Module导入

导入OpenCV模块

具体步骤为:File->New->Import Module:
请添加图片描述

然后将OpenCV-android-sdk\sdk目录导入,最好顺便将模块名改成opencv+版本号。如下图,然后Next->Finish。

请添加图片描述
改OpenCV下的build.gradle文件, 将下图中的两处改为与app模块的设置一致请添加图片描述

添加依赖,菜单栏选择File->Project Structure,在Dependencies选项中选择app,点击+,选择Module dependency,如下图:

请添加图片描述

勾选OpenCV,点击OK,等待同步
请添加图片描述

配置参数,打开app的build.gradle,在android.defaultConfig下面添加如下配置:

externalNativeBuild {cmake {cppFlags '-std=c++14 -frtti -fexceptions'abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'arguments "-DOpenCV_DIR=" + project(":opencv480").projectDir + "/native/jni",'-DANDROID_STL=c++_shared'}}

这时环境就算配置好了。
下面用一个简单和灰度化验证一下。

灰度化

关键代码:

override fun onResume() {super.onResume()if (!OpenCVLoader.initDebug()){Log.i("main","未找到内部的opencv库")}else{Log.i("main","发现了内置的opencv库");doGray()}}private fun doGray(){val bitmap = BitmapFactory.decodeResource(resources,R.drawable.ldh)val bit = bitmap.copy(Bitmap.Config.ARGB_8888,false)val src = Mat(bit.height,bit.width,CvType.CV_8UC(3))Utils.bitmapToMat(bit,src)Imgproc.cvtColor(src,src,Imgproc.COLOR_BGR2GRAY)Utils.matToBitmap(src,bitmap)binding.sampleImage.setImageBitmap(bitmap)}

效果:
请添加图片描述
成功!!

相关文章:

android 和 opencv 开发环境搭建

本文详细说明给android项目添加opencv库的详细步骤,并通过实现图片灰度化来查看配置是否成功。 下载OPENCV ANDROID SDK 到官网下载 打开 https://opencv.org/releases/ 选择android,下载完成后解压出下面的文件: 安装android sdk 和 ndk …...

elasticsearch[一]-索引库操作(轻松创建)、文档增删改查、批量写入(效率倍增)

elasticsearch[一]-索引库操作(轻松创建)、文档增删改查、批量写入(效率倍增) 1、初始化 RestClient 在 elasticsearch 提供的 API 中,与 elasticsearch 一切交互都封装在一个名为 RestHighLevelClient 的类中,必须先完成这个对象的初始化,…...

tp6框架中Http类 请求的header、body参数传参 及post、file格式

引入Http类: 在需要使用的地方引入Http类: use think\facade\Http; GET请求示例:$response Http::get(https://example.com/api/resource); 设置Header参数: $headers [ Authorization > Bearer YourAccessToken, Conte…...

基于极限学习机的图像处理,基于ELM的图像分割,基于极限学习机的细胞分割

目录 背影 极限学习机 基于极限学习机的图像,基于ELM的图像分割 主要参数 MATLAB代码 效果图 结果分析 展望 完整代码下载链接:基于极限学习机的图像,基于ELM的图像分割(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88759192 背…...

ELAU C400/A8/1/1/1/00嵌入式系统中的模块动态加载技术

ELAU C400/A8/1/1/1/00嵌入式系统中的模块动态加载技术 ... 代码。这些script会根据模块名字查找模块对应的模块声明文件,并根据该 ... 的地址,注册时需提供模块名和模块重定位表的地址。加 ... 。这个表的表项是“模块名”到“模块重定位表地址”…...

github clone Failed to connect to github.com port 443 after xxx ms

最近克隆github项目时老是报超时,可以尝试以下解决方法 如果本地开启了代理还是clone超时,可以尝试最后一种方式解决 1、把 https 换成 http,如: git clone http:xxx2、更新本地hosts配置,可以参考这篇文章获取最新的…...

ARM的一些基础知识

1.低功耗接口 P-CHANNEL和Q-CHANNEL AMBA低功耗接口(一)Q_Channel_q-channel p-channel-CSDN博客 AMBA低功耗接口(二)P_Channel_p channel-CSDN博客 2.WFI和WFE指令 ARM WFI和WFE指令 ARM hint instruction-WFI(Wait For In…...

零售的数字化转型,利用AWS云服务资源如何操作?

国内市场趋于饱满,各行各业的发展接近瓶颈,就连零售行业都竞争激烈,随处可见的零售小店也预示着需要投入大量的人力,而且由于消费者的行为和预期已经发生了根本性变化,这迫使零售商不得不加速整个价值链的数字化转型&a…...

【通知】我的教学文章《Rust跟我学》已全部上线

大家好,我是get_local_info开源库作者带剑书生,现在我的《Rust跟我学》专栏文章已全部上线,它记录了我在写库时获得的重要Rust经验和技巧,是不同于《Rust语言编程》等简单实践的书籍。为您节省了学习时间,让您可以快速…...

Docker安全基线检查需要修复的一些问题

一、可能出现的漏洞 限制容器之间的网络流量 限制容器的内存使用量 为Docker启用内容信任 将容器的根文件系统挂载为只读 审核Docker文件和目录 默认情况下,同一主机上的容器之间允许所有网络通信。 如果不需要,请限制所有容器间的通信。 将需要相互通…...

MobX 的 Observable Array,如何转换成一个普通的数组

问题描述 访问mobx store里面的数据时打印结果为如下,是一个 MobX 的 Observable Array,而不是一个普通的数组。MobX 使用 Proxy 来实现响应式数据,因此打印的结果为的是 Proxy 对象。可是我需要的是实际的数组数据。 Proxy {0: Proxy, 1: …...

spring boot集成loback日志配置

1.spring boot中application.properties配置 logging.configclasspath:loback-config.xml 2.配置loback-config.xml <?xml version"1.0" encoding"UTF-8"?> <!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR <…...

【mars3d】 graphic.bindPopup(inthtml).openPopup()无需单击小车,即可在地图上自动激活弹窗的效果。

实现效果&#xff1a;new mars3d.graphic.FixedRoute({无需单击小车&#xff0c;即可在地图上实现默认打开弹窗的激活效果。↓↓↓↓↓↓↓↓ 相关链接说明&#xff1a; 1.popup的示例完全开源&#xff0c;可参考&#xff1a;功能示例(Vue版) | Mars3D三维可视化平台 | 火星科…...

工厂企业消防安全AI可视化视频智能监管解决方案

一、方案背景 2023年11月20日下午6时30分许&#xff0c;位于江苏省无锡市惠山区前洲街道的某公司突发严重火灾&#xff0c;共造成7人死亡。这次火灾提醒我们工业安全至关重要&#xff0c;企业都应该时刻保持警惕&#xff0c;加强安全意识和培训&#xff0c;提高应对突发事件的…...

【并发编程】synchornized原理

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;并发编程 ⛺️稳重求进&#xff0c;晒太阳 目录 Monitor概念 Java对象头 普通对象 数组对象 Monitor(锁) Monitor结构如下&#xff1a; 注意&#xff1a; 原理之synchornized 轻量…...

计算机网络-ACL访问控制列表

上一篇介绍NAT时候就看到了ACL这个东西了&#xff0c;这个是什么意思&#xff1f;有什么作用呢&#xff1f; 一、ACL访问控制列表 访问控制列表 (ACL, Access Control List)是由一系列permit或deny语句组成的、有序规则的列表。ACL是一个匹配工具&#xff0c;能够对报文进行匹配…...

论文学习记录之SeisInvNet(Deep-Learning Inversion of Seismic Data)

目录 1 INTRODUCTION—介绍 2 RELATED WORKS—相关作品 3 METHODOLOGY AND IMPLEMENTATION—方法和执行 3.1 方法 3.2 执行 4 EXPERIMENTS—实验 4.1 数据集准备 4.2 实验设置 4.3 基线模型 4.4 定向比较 4.5 定量比较 4.6 机理研究 5 CONCLUSION—结论 1 INTRODU…...

深度学习中的优化方法

深度学习中的优化问题通常指的是:寻找神经网络上的一组参数 θ \theta θ,它能显著地降低代价函数 J ( θ ) J(\theta) J(θ...

【设计模式之美】重构(三)之解耦方法论:如何通过封装、抽象、模块化、中间层等解耦代码?

文章目录 一. “解耦”概述二. 如何给代码“解耦”&#xff1f;1. 封装与抽象2. 中间层2.1. 引入中间层能**简化模块或类之间的依赖关系**。2.2. 引入中间层可以起到过渡的作用&#xff0c;能够让开发和重构同步进行&#xff0c;不互相干扰。 3. 模块化4. 其他设计思想和原则4.…...

Spring MVC学习之——Controller类中方法的返回值

Controller类中方法的返回值 1.返回ModelAndView RequestMapping("/hello")public ModelAndView hello(){//封装了页面和数据ModelAndView view new ModelAndView();//对这个请求的页面添加属性&#xff08;数据&#xff09;view.addObject("hello",&quo…...

哔咔漫画下载器:构建个人离线漫画库的完整解决方案

哔咔漫画下载器&#xff1a;构建个人离线漫画库的完整解决方案 【免费下载链接】picacomic-downloader 哔咔漫画 picacomic pica漫画 bika漫画 PicACG 多线程下载器&#xff0c;带图形界面 带收藏夹&#xff0c;已打包exe 下载速度飞快 项目地址: https://gitcode.com/gh_mir…...

二层与三层交换机核心差异解析:从MAC地址到IP路由的实战指南

1. 项目概述&#xff1a;从“傻”到“聪明”的进化之路如果你刚接触网络设备&#xff0c;看到“二层交换机”和“三层交换机”这两个名词&#xff0c;可能会有点懵。它们长得都差不多&#xff0c;都是方方正正的铁盒子&#xff0c;前面板一堆网口&#xff0c;后面插着电源和风扇…...

汽车软件测试实战指南:从MiL到HiL的测试体系与工程实践

1. 汽车软件测试&#xff1a;从术语迷雾到实战地图 干了十几年嵌入式&#xff0c;从消费电子一路干到汽车电子&#xff0c;最深的感触就是&#xff1a; “隔行如隔山” &#xff0c;这话在汽车软件测试领域体现得淋漓尽致。刚入行那会儿&#xff0c;听到同事讨论MiL、SiL、Hi…...

【紧急预警】Perplexity v3.2+图谱查询API行为突变:4类高危误用场景及24小时内修复方案

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity知识图谱查询 Perplexity 是一款基于大语言模型的实时知识检索工具&#xff0c;其底层融合了多源结构化知识图谱与动态网页索引能力&#xff0c;支持对实体、关系及事件进行语义化查询。不同于传统…...

pdf2pptx:打破学术演示壁垒的智能转换神器

pdf2pptx&#xff1a;打破学术演示壁垒的智能转换神器 【免费下载链接】pdf2pptx Convert your (Beamer) PDF slides to (Powerpoint) PPTX 项目地址: https://gitcode.com/gh_mirrors/pd/pdf2pptx 你是否曾因LaTeX Beamer制作的精美数学公式幻灯片无法在PowerPoint中完…...

大学生会计师证书怎么考?2026年小白必看:从入门到进阶的考证通关指南

&#x1f44b; 嗨&#xff0c;亲爱的同学们&#xff01;如果你点开了这篇文章&#xff0c;我猜你现在可能正坐在图书馆的某个角落&#xff0c;对着满桌的教材发愁&#xff0c;或者是在寝室里刷着手机&#xff0c;看着网上铺天盖地的“会计劝退论”和“考证焦虑”瑟瑟发抖。别慌…...

CANN ops-fft未来规划:51+接口路线图与社区发展蓝图

CANN ops-fft未来规划&#xff1a;51接口路线图与社区发展蓝图 【免费下载链接】ops-fft ops-fft 是 CANN &#xff08;Compute Architecture for Neural Networks&#xff09;算子库中提供 FFT 类计算的基础算子库&#xff0c;采用模块化设计&#xff0c;支持灵活的算子开发和…...

技术解密:如何从零构建开源贴片机的完整指南

技术解密&#xff1a;如何从零构建开源贴片机的完整指南 【免费下载链接】lumenpnp The LumenPnP is an open source pick and place machine. 项目地址: https://gitcode.com/gh_mirrors/lu/lumenpnp 在电子制造领域&#xff0c;贴片机一直是小型创客和硬件开发者难以企…...

PyMol实战:从PDB下载1lEP到绘制靶点-药物相互作用图的保姆级教程

PyMol实战&#xff1a;从PDB下载1lEP到绘制靶点-药物相互作用图的保姆级教程 在药物研发和结构生物学领域&#xff0c;可视化分析靶点-药物相互作用是理解分子识别机制的关键环节。PyMol作为一款专业的分子可视化工具&#xff0c;能够帮助研究人员从原子层面解析蛋白质-配体复合…...

从 API 调用到工具链:梳理 AI 介入测试流程的 5 个成熟度等级

2026年,AI正在以前所未有的速度重构软件测试行业。但“AI测试”并非一个开关——从简单调用ChatGPT生成几条用例,到构建完整的Agent自愈测试体系,中间存在一条清晰的能力进化路径。本文将这条路径梳理为5个成熟度等级,结合2026年最新工具、开源项目与行业数据,帮你准确评估…...