OpenCV4.9.0在Android 开发简介

 查看:OpenCV系列文章目录(持续更新中......)

上一篇:使用 Clojure 进行 OpenCV 开发简介

下一篇:暂无

引言:

OpenCV是一个跨平台计算机视觉库,广泛用于图像处理、计算机视觉和机器学习等领域。通过OpenCV,我们可以轻松地实现各种图像处理算法,如图像滤波、形态学变换、边缘检测、特征提取、图像分割等。随着移动设备的流行,越来越多的应用程序需要在移动平台上使用OpenCV。本篇博客将介绍OpenCV在Android开发中的基础知识和使用方法。您将学习如何配置OpenCV库和使用其API实现一些基本的图像处理功能,包括图像读写、图像显示、图像滤波、形态学操作等。我们还将讨论如何将OpenCV应用于实际应用程序中,例如照相机应用程序和人脸识别应用程序。本篇博客旨在为想要将OpenCV集成到其Android应用程序中的初学者提供指导。我们希望本文能够为读者提供理解OpenCV在Android平台上的基础知识,并提供实际示例来帮助他们更深入地了解OpenCV的API。无论您是有经验的Android开发人员还是初学者,我都相信本篇博客能够为您带来帮助。

Android 是一个基于 Linux 的开源移动操作系统,由谷歌领导的开放手机联盟开发。有关一般详细信息,请参阅 Android 主站点。

针对 Android 的开发与其他平台的开发有很大不同。因此,在开始针对 Android 进行编程之前,我们建议您确保熟悉以下关键主题:

  1. Java 编程语言是 Android 操作系统的主要开发技术。此外,您还可以找到有关 Java 的 Oracle 文档。
  2. Java 本机接口 (JNI) 是一种在 Java 虚拟机中运行本机代码的技术。此外,您还可以找到有关 JNI 的 Oracle 文档。
  3. Android Activity 及其生命周期,这是必不可少的 Android API 类。
  4. OpenCV 开发肯定需要对 Android Camera 的细节有一定的了解。

本指南旨在帮助您学习 Android 开发基础知识并快速设置您的工作环境。它已在 Ubuntu 22.04 和 Windows 10 上进行了测试。如果您在彻底执行这些步骤后遇到任何错误,请随时通过 OpenCV 论坛与我们联系。我们将尽最大努力为您提供帮助。

用于 Android 开发的手动环境设置

在本教程中,我们将使用官方的 Android Studio IDE 和一组其他免费可用的工具。

获取工具和依赖项

Here's how to get a ready to work environment:

  1. 下载并安装 Android Studio:

Ubuntu的:

  1. 下载 Android Studio: https://developer.android.com/studio
  2. 提取tar.gz存档
  3. 按照中的说明操作:在终端中打开文件夹并运行Install-Linux-tar.txtandroid-studio/bin./studio.sh
  4. 通过GUI执行标准安装
  5. 或者,您可以通过单击菜单“工具”->“创建桌面条目”在桌面上添加快捷方式以快速访问。该菜单在创建或打开任何项目后显示。

Windows:只需从官方网站下载 Android Studio 并运行安装程序即可

  1. 安装全新的 Android SDK 和 NDK:
  2. 在 Android Studio 中打开 SDK 管理器(自定义 -> 所有设置 -> 语言和框架 -> Android SDK)
  3. 启用“显示包详细信息”复选框

sdk_ndk_manager.png

  1. 检查最新版本的 SDK 和 NDK,然后按 OK
  2. 确保您的设备支持所选的 SDK 版本
  3. 安装构建所需的所有软件包:
sudo apt install git cmake ninja-build openjdk-17-jdk openjdk-17-jre
  • 其余必需的包是依赖项,应自动安装

查看OpenCV示例

  1. 从 Github 或 SourceForge 的官方发布页面从 Android SDK 下载 OpenCV。
  2. 使用操作系统工具提取 zip 存档。
  3. 在 Android Studio 中打开项目。<YOUR_OPENCV_BUILD_FOLDER>/OpenCV-android-sdk/samples
  4. 连接您的设备
  • 应在设备上启用调试,您可以在 Web 上找到有关它的说明
  • 或者,您可以使用 Android Studio 附带的虚拟设备
  • choose_device.png

从下拉菜单中选择一个示例(例如,)并运行它。15-puzzle

用于测试和调试的设置设备

通常,上述配方按预期工作,但在某些情况下,必须执行其他操作。在本节中,我们将介绍一些情况。

Windows主机

如果您使用的是 Windows 10 或更高版本,则无需执行其他操作即可连接手机并在其上运行示例。但是,早期的 Windows 版本需要更长的过程:

  1. 在Android设备上启用USB调试(通过“设置”菜单)。
  2. 使用 USB 数据线将 Android 设备连接到您的 PC。
  3. 转到“开始”菜单,然后右键单击“计算机”。在上下文菜单中选择“管理”。系统可能会要求您提供管理权限。
  4. 在左窗格中选择“设备管理器”,然后在列表中查找未知设备。您可以尝试拔下它,然后重新插入,以检查它是否是您的确切设备出现在列表中。

usb_device_connect_01.png

5、试试运气,无需任何修改即可安装 Google USB 驱动程序:右键单击未知设备,选择“属性”菜单项 -> 详细信息选项卡 -> 更新驱动程序按钮。

usb_device_connect_05.png

6.选择“浏览计算机以查找驱动程序软件”。

usb_device_connect_06.png

  1. 指定文件夹的路径。 <Android SDK folder>/extras/google/usb_driver/ folder.

    usb_device_connect_07.png

  2. 如果系统提示您安装未经验证的驱动程序并报告成功,则您已经完成了 USB 驱动程序安装。

    usb_device_connect_08.png

    usb_device_connect_09.png

  3. 否则(出现如下所示的故障),请按照以下步骤操作。

    usb_device_connect_12.png

  4. 再次右键单击未知设备,选择“属性”-“>详细信息”-“>硬件 ID”,然后复制类似 的行 USB\VID_XXXX&PID_XXXX&MI_XX.

    usb_device_connect_02.png

  5. 现在打开文件 <Android SDK folder>/extras/google/usb_driver/android_winusb.inf. 选择 Google.NTx86 或 Google.NTamd64 部分,具体取决于您的主机系统体系结构

    usb_device_connect_03.png

  6. 您的设备应该有一个与现有记录类似的记录,您需要手动添加一个

    usb_device_connect_04.png

  7. 保存android_winusb.inf文件并尝试再次安装 USB 驱动程序

    usb_device_connect_05.png

    usb_device_connect_06.png

    usb_device_connect_07.png

  8. 这次安装应该会成功

    usb_device_connect_08.png

    usb_device_connect_09.png

  9. 未知设备现在被识别为 Android 手机。

    usb_device_connect_10.png

  10. 可以通过 adb devices 命令在控制台中验证设备 USB 连接是否成功。

    usb_device_connect_11.png

  11. 现在,在 Eclipse 中,转到 Run -> Run/Debug 以常规模式或调试模式运行应用程序。设备选择器将允许您在设备中进行选择。
Linux主机

虽然最新的 Ubuntu 版本适用于连接的 Android 设备,但旧版本可能会出现问题。但是,它们中的大多数都可以轻松修复。您必须创建一个新的 **/etc/udev/rules.d/51-android.rules** 配置文件,其中包含有关您的 Android 设备的信息。您可以在此处找到一些供应商 ID 或执行 lsusb 命令以查看插入的 Android 设备的供应商 ID。以下是LG设备的此类文件的示例:

SUBSYSTEM=="usb", ATTR{idVendor}=="1004", MODE="0666", GROUP="plugdev"

然后重新启动您的adb服务器(最好重新启动系统),插入您的Android设备并执行adb devices 命令。您将看到连接的设备列表:

savuor@rostislav-laptop:~/Android/Sdk/platform-tools$ ./adb devices
List of devices attached
R58MB40Q3VP device
savuor@rostislav-laptop:~/Android/Sdk/platform-tools$
Mac OS 主机

无需执行任何操作,只需通过 USB 连接您的设备并运行 adb devices 即可检查连接。

后续步骤

现在,当您设置和配置了 OpenCV4Adroid SDK 实例后,您可能希望在自己的应用程序中使用 OpenCV。您可以在单独的 Android 开发 OpenCV 教程中了解如何执行此操作。


 参考文献:

1、《Introduction into Android Development》Rostislav Vasilikhin

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/280751.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

雀巢中国劳动力生态系统上线仪式圆满落幕

3月19日&#xff0c;雀巢中国劳动力生态系统上线仪式在雀巢北京总部举办。双方代表对项目进行了回顾&#xff0c;并就2024年的重点任务展开了深入讨论&#xff0c;共同探讨未来合作的方向和策略。 当天下午&#xff0c;劳动力效能典范游学之走进雀巢活动圆满落幕。活动展示了雀…

数字人解决方案— SadTalker语音驱动图像生成视频原理与源码部署

简介 随着数字人物概念的兴起和生成技术的不断发展&#xff0c;将照片中的人物与音频输入进行同步变得越来越容易。然而&#xff0c;目前仍存在一些问题&#xff0c;比如头部运动不自然、面部表情扭曲以及图片和视频中人物面部的差异等。为了解决这些问题&#xff0c;来自西安…

C# winform修改背景图 控件双向绑定 拖拽打开图片

修改背景图 说明 这里我准备基于百度飞桨PaddleSeg项目的人像分割模块做一个人像抠图&#xff0c;这里顺便用上了双向绑定和图片拖拽打开。 下面就是示例&#xff1a; 用颜色替换 用背景图替换 保存成功后的图片 一、使用百度飞桨PaddleSeg //初始化 引擎engine new Padd…

使用ansible批量修改操作系统管理员账号密码

一、ansible server端配置 1、对于Linux主机配置免密登录ssh-copy-id -i ~/.ssh/id_rsa.pub rootremote_ip 2、在/etc/ansible/hosts文件中添加相应主机IP 3、对于Windows主机需要在/etc/ansible/hosts文件中进行以下配置 192.168.83.132 ansible_ssh_useradministrator an…

【AI】Ubuntu系统深度学习框架的神经网络图绘制

一、Graphviz 在Ubuntu上安装Graphviz&#xff0c;可以使用命令行工具apt进行安装。 安装Graphviz的步骤相对简单。打开终端&#xff0c;输入以下命令更新软件包列表&#xff1a;sudo apt update。之后&#xff0c;使用命令sudo apt install graphviz来安装Graphviz软件包。为…

mysql笔记:24. 主从同步环境搭建

文章目录 主从同步的基本原理主从同步的搭建步骤1. 环境准备2. 配置主服务器&#xff08;Master&#xff09;3. 配置从服务器&#xff08;Slave&#xff09;4. 测试配置5. 常见故障5.1. 主从服务器上的MySQL版本不一致导致失败&#xff1f;5.2. Slave_IO_Running状态异常&#…

Mybatis之自定义映射resultMap

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

深度学习之本地部署大模型ChatGLM3-6B【大模型】【报错】

文章目录 0.前言1.模型下载2.配置环境2.1 下载项目文件2.2 配置环境 3.开始推理4.总结 0.前言 本博客将介绍ChatGLM3-6B大模型在Ubuntu上的本地部署教程 1.模型下载 由于毛毛张的服务器服务无法科学上网&#xff0c;所以模型的相关文件必须现在本地下载好&#xff0c;再上传到…

抖店怎么入驻?2024最新入驻流程,新手必看!

我是电商珠珠 最近&#xff0c;很多新手都来问我&#xff0c;入驻抖店的话有没有什么学习资料啊&#xff0c;入驻都需要什么资质啊等等&#xff0c;我也整理了一份&#xff0c;新手入门必备资料&#xff0c;需要的可以来找我拿。 下面我来说说抖店的入驻资质&#xff0c;以及…

C++ —— 内存管理

目录 1. C内存分布 2. C 内存管理方式 2.1 new 和 delete 操作内置类型 2.2 new 和 delete 操作自定义类型 3. operator new与operator delete函数 4. new和delete的实现原理 5. malloc/free 和 new/delete 的区别 1. C内存分布 首先看一段代码&#xff1a; int globalV…

Vue 3响应式系统详解:ref、toRefs、reactive及更多

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…

停车管理系统asp.net+sqlserver

停车管理系统asp.netsqlserver 说明文档 运行前附加数据库.mdf&#xff08;或sql生成数据库&#xff09; 主要技术&#xff1a; 基于asp.net架构和sql server数据库&#xff0c; 功能模块&#xff1a; 停车管理系统asp.net sqlserver 用户功能有菜单列表 我的停车记录 专…

赋能数据收集:从机票网站提取特价优惠的JavaScript技巧

背景介绍 在这个信息时代&#xff0c;数据的收集和分析对于旅游行业至关重要。在竞争激烈的市场中&#xff0c;实时获取最新的机票特价信息能够为旅行者和旅游企业带来巨大的优势。 随着机票价格的频繁波动&#xff0c;以及航空公司和旅行网站不断推出的限时特价优惠&#xff…

汽车KL15、KL30、ACC的区别

文章目录 前言一、KL30是什么&#xff1f;二、KL15是什么&#xff1f;KL15信号的演变 三、为啥用KL15、KL30呢&#xff1f; 前言 相信刚接触汽车电子的伙伴都会有一个疑惑&#xff0c;什么是KL15?什么是KL30? 内心一脸懵逼…… KL是德语Klemme的缩写&#xff0c;指的是ECU的…

【Flutter 面试题】Flutter如何进行本地存储和缓存数据?

【Flutter 面试题】Flutter如何进行本地存储和缓存数据&#xff1f; 文章目录 写在前面口述回答补充说明实际案例完整代码示例运行结果详细说明 写在前面 &#x1f64b; 关于我 &#xff0c;小雨青年 &#x1f449; CSDN博客专家&#xff0c;GitChat专栏作者&#xff0c;阿里云…

两个免费的wordpress主模板

wordpress免费网站主题 蓝色高端大气上档次的wordpress免费网站主题&#xff0c;首页大图wordpress模板。 https://www.wpniu.com/themes/31.html WP免费模板 用粉色高端大气上档次的WP免费模板&#xff0c;建个网站也不错的。 https://www.wpniu.com/themes/16.html

npm ERR! code ELIFECYCLE 解决办法

npm ERR! code ELIFECYCLE 解决办法 问题分析可能原因解决方法 问题 使用Vue脚手架构建项目的时候出现npm ERR! code ELIFECYCLE 分析可能原因 vue-cli-service 并没有加入到环境变量里 解决方法 ./node_modules/.bin/vue-cli-service serve

Day74:WEB攻防-机制验证篇重定向发送响应状态码跳过步骤验证码回传枚举

目录 验证码突破-回传显示&规律爆破 某目标回显显示 某APP验证码爆破 验证目标-重定向用户&重定向发送 某CMS重定向用户 某CMS重定向发送 验证逻辑-修改响应包&跳过步骤URL 某APP修改响应包 某APP跳过步骤URL 实战SRC验证逻辑挖掘分享案例 短信验证码回…

SpringCloud Alibaba Nacos 服务注册和配置中心

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第十二篇&#xff0c;即介绍 SpringCloud Alibaba Nacos 服务注册和配置中心。 二、Nacos 简介 2.1 为…

HarmonyOS(鸿蒙)应用开发——(一)

目录 1 创建hellopro项目 2 了解ArkTS 3 了解ArkTS的组件 4 组件介绍 4.1 常用基础组件&#xff1a; 4.1.1 Text 4.1.2 Button 4.1.3 TextInput 4.2 容器组件 4.2.1 Column 4.2.2 Row 5 案例——实现一个简易登录页面 5.1 在实现预览效果之前&#xff0c;我们…