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()无需单击小车,即可在地图上自动激活弹窗的效果。
实现效果:new mars3d.graphic.FixedRoute({无需单击小车,即可在地图上实现默认打开弹窗的激活效果。↓↓↓↓↓↓↓↓ 相关链接说明: 1.popup的示例完全开源,可参考:功能示例(Vue版) | Mars3D三维可视化平台 | 火星科…...
工厂企业消防安全AI可视化视频智能监管解决方案
一、方案背景 2023年11月20日下午6时30分许,位于江苏省无锡市惠山区前洲街道的某公司突发严重火灾,共造成7人死亡。这次火灾提醒我们工业安全至关重要,企业都应该时刻保持警惕,加强安全意识和培训,提高应对突发事件的…...
【并发编程】synchornized原理
📝个人主页:五敷有你 🔥系列专栏:并发编程 ⛺️稳重求进,晒太阳 目录 Monitor概念 Java对象头 普通对象 数组对象 Monitor(锁) Monitor结构如下: 注意: 原理之synchornized 轻量…...
计算机网络-ACL访问控制列表
上一篇介绍NAT时候就看到了ACL这个东西了,这个是什么意思?有什么作用呢? 一、ACL访问控制列表 访问控制列表 (ACL, Access Control List)是由一系列permit或deny语句组成的、有序规则的列表。ACL是一个匹配工具,能够对报文进行匹配…...
论文学习记录之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(θ...
【设计模式之美】重构(三)之解耦方法论:如何通过封装、抽象、模块化、中间层等解耦代码?
文章目录 一. “解耦”概述二. 如何给代码“解耦”?1. 封装与抽象2. 中间层2.1. 引入中间层能**简化模块或类之间的依赖关系**。2.2. 引入中间层可以起到过渡的作用,能够让开发和重构同步进行,不互相干扰。 3. 模块化4. 其他设计思想和原则4.…...
Spring MVC学习之——Controller类中方法的返回值
Controller类中方法的返回值 1.返回ModelAndView RequestMapping("/hello")public ModelAndView hello(){//封装了页面和数据ModelAndView view new ModelAndView();//对这个请求的页面添加属性(数据)view.addObject("hello",&quo…...
Phi-4-mini-reasoning镜像免配置:预置Prometheus监控指标暴露配置
Phi-4-mini-reasoning镜像免配置:预置Prometheus监控指标暴露配置 1. 模型简介与部署概述 Phi-4-mini-reasoning是一个基于合成数据构建的轻量级开源模型,专注于高质量、密集推理的数据处理能力。作为Phi-4模型家族的一员,它特别针对数学推…...
OpenClaw私人健身教练:Qwen2.5-VL-7B分析运动视频与生成计划
OpenClaw私人健身教练:Qwen2.5-VL-7B分析运动视频与生成计划 1. 为什么需要AI健身教练 去年夏天,我在健身房遇到一个尴尬场景:深蹲时被教练提醒"膝盖内扣"已经持续了三周却毫无察觉。这种滞后反馈让我开始思考——能否用AI实现实…...
pygcn终极指南:解决图神经网络开发者最常遇到的10个核心问题
pygcn终极指南:解决图神经网络开发者最常遇到的10个核心问题 【免费下载链接】pygcn Graph Convolutional Networks in PyTorch 项目地址: https://gitcode.com/gh_mirrors/py/pygcn pygcn是一个基于PyTorch实现的图卷积网络(GCN)框架…...
ReactNative项目OpenHarmony三方库集成实战:react-native-render-html
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.csdn.net 项目基于 RN 0.72.90 开发 📋 前言 在移动应用开发中,HTML 内容渲染是一项常见需求,特别是在新闻资讯、富文本编辑、邮件展示等场景中。React Native 原…...
OpenClaw二次开发:基于Qwen3.5-9B定制个性化技能模块
OpenClaw二次开发:基于Qwen3.5-9B定制个性化技能模块 1. 为什么需要自定义技能模块 去年冬天,我发现自己每天早晨都要手动查询天气来决定穿什么衣服。作为一个技术爱好者,我开始思考:能否让OpenClaw自动完成这个任务?…...
手把手搓FPGA版W5500三合一驱动
FPGA W5500 3合一 驱动 UDP、TCP客户端、TCP服务端三合一,8个SOCKET都可用源代码,SPI时钟80m,无时序问题,上手即用 硬件实测,高速、稳定 verilog编写,纯逻辑实现 这块W5500芯片的驱动在项目里被我折腾了半个月…...
郭老师-永远要跟认知比你高的人在一起
永远要跟认知比你高的人在一起 ——从高人身上汲取智慧“你跟什么样的人在一起, 比你做什么样的事情重要得多。” ——巴菲特🌿 真正的成长, 不是埋头苦干, 而是—— 站在巨人的肩膀上看世界。🔭 一、认知高的人&#…...
002、游戏画面捕获与预处理:屏幕抓取、图像增强与目标区域锁定
# ## 一、深夜调试:为什么我的YOLO总是漏掉BOSS? 上周三凌晨两点,我盯着屏幕上的暗黑风格游戏画面,第37次跑通了训练好的YOLOv5模型。结果让人沮丧——在快速移动的战斗场景中,模型对BOSS的识别率不到60%。不是模型不行,而是喂给模型的图像质量太差:屏幕截图模糊、颜色…...
9 鸿蒙页面渲染效率优化实战 | 鸿蒙开发筑基实战
9 鸿蒙页面渲染效率优化实战 | 鸿蒙开发筑基实战 作者:杨建宾(华夏之光永存) 摘要 本文聚焦鸿蒙应用页面渲染卡顿、掉帧、长列表加载缓慢等核心痛点,梳理页面渲染全流程的通用优化方案,从布局规范、组件复用、渲染管控…...
仿真波形截图](https://example.com/waveform.jpg
永磁同步电机全速域无位置传感器控制仿真,高频注入改进滑膜控制,PMSM矢量控制仿真 1,在零低速域,采用无数字滤波器高频方波注入法,减少滤波的相位影响,且对凸极性要求不高; 2,在中高…...
