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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

TinyEMU源码分析之虚拟机初始化

TinyEMU源码分析之虚拟机初始化 1 初始化结构参数2 配置RAM地址空间3 初始化设备4 拷贝BIOS和Kernel5 手动写入5条指令6 体验第一条指令的执行 本文属于《 TinyEMU模拟器基础系列教程》之一&#xff0c;欢迎查看其它文章。 本文中使用的代码&#xff0c;均为伪代码&#xff0c…

Java 面向对象编程进阶七(字符串 String )

目录 字符串 String String 基础 String 类和常量池 String 类常用的方法 String 类常用方法一 String 类常用方法二 字符串相等的判断 字符串 String String 是我们开发中最常用的类&#xff0c;我们不仅要掌握 String 类常见的方法&#xff0c;对于 String 的 底层实现…

Vue.js+SpringBoot开发智能教学资源库系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 课程档案模块2.3 课程资源模块2.4 课程作业模块2.5 课程评价模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 课程档案表3.2.2 课程资源表3.2.3 课程作业表3.2.4 课程评价表 四、系统展示五、核心代…

多进程数据库不适合作为hive的元数据库

简介 “今天发现一个比较奇怪的现象&#xff0c;因为博主不熟悉mysql&#xff0c;所以在安装hive的使用了postgresql作为hive的元数据库&#xff0c;在测试几个连接工具对hive进行链接&#xff0c;后面再测试的时候发现链接不上了&#xff0c;并且报错日志如下&#xff1a;” …

【记录39】html element-ui 加载

环境 html使用element-ui组件、用vue框架搭建 方法一&#xff1a; 方法二&#xff08;推荐&#xff09; 将相关资源下载下来&#xff0c;在对应的html文件中相对路径引入。注意&#xff1a;css加载放在js之前

导航栏还是侧栏?flutter 跨平台适配指南

介绍 引言&#xff1a;Flutter 的跨平台特性 Flutter 是由 Google 开发的一款跨平台应用开发框架&#xff0c;它具有许多优点&#xff0c;包括性能优异、开发效率高以及良好的用户体验等。其中&#xff0c;最引人注目的特性之一就是其出色的跨平台能力。通过编写一套代码&…

数学建模(熵权法 python代码 例子)

目录 介绍&#xff1a; 模板&#xff1a; 例子&#xff1a;择偶 极小型指标转化为极大型&#xff08;正向化&#xff09;&#xff1a; 中间型指标转为极大型&#xff08;正向化&#xff09;&#xff1a; 区间型指标转为极大型&#xff08;正向化&#xff09;&#xff1a…

电脑设备管理器在哪?这里有详细指南!

电脑设备管理器是Windows操作系统中一个重要的工具&#xff0c;它允许用户查看和管理计算机中的硬件设备。无论是查找设备驱动程序、识别硬件问题还是管理设备属性&#xff0c;设备管理器都是一个不可或缺的工具。在本文中&#xff0c;我们将介绍三种常见的方法&#xff0c;以分…

Docker容器化技术(docker-compose安装部署案例)

docker-compose编排工具 安装docker-compose [rootservice ~]# systemctl stop firewalld [rootservice ~]# setenforce 0 [rootservice ~]# systemctl start docker[rootservice ~]# wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-…

Python——pgzero游戏打包exe执行时报错

Python——pgzero游戏打包exe执行时报错 记录一次使用 pgzero 开发游戏&#xff0c;使用 pyinstaller 打包时报错 目录结构&#xff1a; 1. 第一次报错 打包指令&#xff1a; pyinstaller -Fw .\code.py结果打开报错 报错如下&#xff1a; Traceback (most recent call…

【机器学习300问】39、高斯分布模型如何实现异常检测?

一、异常检测是什么&#xff1f; &#xff08;1&#xff09;举几个例子 ① 信用卡交易异常检测 在信用卡交易数据分析中&#xff0c;如果某个用户的消费习惯通常是小额且本地化消费&#xff0c;那么突然出现一笔大额且跨国的交易就可能被标记为异常。 ② 电机温度异常检测 在电…

软考 系统架构设计师系列知识点之云原生架构设计理论与实践(1)

所属章节&#xff1a; 第14章. 云原生架构设计理论与实践 第1节 云原生架构产生背景 云原生&#xff08;Cloud Native&#xff09;是近几年云计算领域炙手可热的话题&#xff0c;云原生技术已成为驱动业务增长的重要引擎。同时&#xff0c;作为新型基础设施的重要支撑技术&…

新一代 数据安全管理平台是什么,对于各行各业的公司又有什么价值?

新一代数据安全管理平台&#xff0c;在数据安全建设体系中可发挥“全局风险治理、统一指挥调度”的重要作用&#xff0c;为用户提供跨数据类型、存储孤岛和生态系统集成数据的产品和服务&#xff0c;从而实现更简单、一致的数据安全。 数据安全管理平台是以数据访问行为分析为基…

Redis如何设置键的生存时间或过期时间

键的生存时间或过期时间 概述。 通过EXPIRE命令或者PEXIPIRE命令&#xff0c;客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间(Time To Live,TTL)&#xff0c;在经过指定的秒数或者毫秒数之后&#xff0c;服务器就会自动删除生存时间为0的键: 127.0.0.1:6379>…

Oracle:ORA-01830错误-更改数据库时间格式

1,先把报错SQL语句拿出来执行&#xff0c;看看是不是报的这个错 ORA-01830: 日期格式图片在转换整个输入字符串之前结束 2&#xff0c;然后查看默认日期格式是不是“YYYY-MM-DD HH24:MI:SS”&#xff08;正确格式&#xff09;。&#xff1b; 执行&#xff1a; SELECT * FRO…

美团24秋招第一套笔试试题

小美的字符串匹配度 我的代码&#xff08;16/20&#xff09; import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextL…

Apache Superset

前言 最近在准备一个小的项目&#xff0c;需要对 Hive 的数据进行展示&#xff0c;所以想到了把 Hive 的数据导出到 MySQL 然后用 Superset 进行展示。 Superset 1.1 Superset概述 Apache Superset是一个现代的数据探索和可视化平台。它功能强大且十分易用&#xff0c;可对接…

表格固定行固定列问题

效果图 代码&#xff1a; 1.第一部分&#xff1a;表格固定行&#xff1a;用合计行来实现 <el-tableclass"fixedRowcol":data"tableData"bordershow-summarysum-text"合计"ref"table"></el-table> 2.第二部分&#xff1…

Docker 【通过Dockerfile构建镜像】【docker容器与镜像的关系】

文章目录 前言一、前期的准备工作二、上手构建一个简单的镜像三、DcokerFile1 指令总览2 指令详情 四、Dockerfile文件规范五、docker运行build时发生了什么?六、调试手段1. 修改镜像打包后&#xff0c;如何验证新内容已更新至镜像 七、Dockerfile优化方案 前言 docker构建镜…

【Spark编程基础】实验三RDD 编程初级实践(附源代码)

目录 一、实验目的二、实验平台三、实验内容1.spark-shell 交互式编程2.编写独立应用程序实现数据去重3.编写独立应用程序实现求平均值问题 一、实验目的 1、熟悉 Spark 的 RDD 基本操作及键值对操作&#xff1b; 2、熟悉使用 RDD 编程解决实际具体问题的方法 二、实验平台 …