使用 OpenCV 进行 Android 开发

这篇具有很好参考价值的文章主要介绍了使用 OpenCV 进行 Android 开发。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本教程旨在帮助您在 Android 项目中使用 OpenCV 库。

本指南已在 Ubuntu 上进行了检查,但不包含与平台相关的部分,因此应与 Android Studio 和 OpenCV4Android SDK 支持的任何操作系统兼容。

本教程假定您已安装并配置了以下内容:

  • Android Studio的
  • JDK的
  • Android SDK 和 NDK
  • 可选:OpenCV for Android SDK,来自 Github 或 SourceForge 的官方发布页面。高级:作为替代方案,SDK 可以通过 wiki 上的说明从源代码构建。

如果您需要上述任何方面的帮助,请参阅我们的 Android 开发简介指南。

如果您在彻底执行这些步骤后遇到任何错误,请随时通过 OpenCV 论坛与我们联系。我们将尽最大努力为您提供帮助。

使用 SDK 的 Hello OpenCV 示例

在本节中,我们将创建一个简单的应用程序,它只执行 OpenCV 加载。在下一节中,我们将扩展它以支持相机。

除了此说明之外,您还可以使用一些视频指南,例如这个

  1. 打开 Android Studio,然后选择 Empty Views Activity (空视图活动) 创建空项目使用 OpenCV 进行 Android 开发,opencv,android,人工智能

  2. 设置项目:

    • 选择 Java 语言
    • 选择 Groovy DSL 构建配置语言
    • 选择版本号不低于 OpenCV 4 Android 构建期间使用的版本号的 Minumum SDK
      • 如果你不知道,你可以在文件中找到它OpenCV-android-sdk/sdk/build.gradleandroid -> defaultConfig -> minSdkVersion

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

  3. 单击“文件”->“新建”-“>导入模块...”,然后选择“OpenCV SDK 路径”

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

  4. 将模块名称设置为并按OpenCVFinish

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

  5. OpenCV 还提供体验式 Kotlin 支持。请将 Android Kotlin 插件添加到文件中:MyApplication/OpenCV/build.gradle
    插件 {
    ID:'org.jetbrains.kotlin.android',版本:'1.7.10',#version 可能因您的设置而异
    }
    喜欢这个:

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

    如果不这样做,可能会出现错误:
    任务失败,出现异常。
    -----------
    *哪里:
    构建文件“/home/alexander/AndroidStudioProjects/MyApplication/opencv/build.gradle”行:4
    * 出了什么问题:
    评估项目“:opencv”时出现问题。
    找不到 ID 为“kotlin-android”的>插件。
    修复程序是在这里找到的
  6. OpenCV 项目使用功能。请在文件中启用它以阻止:buildConfigMyApplication/OpenCV/build.gradleandroid
    buildFeatures{
    buildConfig 为 true
    }
    喜欢这个:

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

    如果不这样做,可能会出现错误:
    JavaCameraView.java:15:错误:找不到符号导入 org.opencv.BuildConfig;^ symbol: class BuildConfig location: package org.opencv
    修复程序是在这里和这里找到的
  7. 将模块添加到项目中:

    • 单击“文件”->“项目结构...”->依赖关系 ->所有模块 -> +(“添加依赖项”按钮) -> 模块依赖项

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

    • 选择app

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

    • 选择OpenCV

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

  8. 在使用任何 OpenCV 函数之前,您必须先加载库。如果您的应用程序包含其他依赖于 OpenCV 的本机库,则应在 OpenCV 初始化加载它们。添加以下代码以在应用启动时加载库:
    如果 (OpenCVLoader.initLocal()) {
    Log.i(TAG, “OpenCV 加载成功”);
    } {
    Log.e(TAG, “OpenCV 初始化失败!”);
    (Toast.makeText(this“OpenCV 初始化失败!”, Toast.LENGTH_LONG)).show();
    返回;
    }
    喜欢这个:

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

  9. 选择要检查示例的设备,然后按按钮运行代码run

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

使用 Maven Central 的 Hello OpenCV 示例

从 OpenCV 4.9.0 开始,OpenCV for Android 包随 Maven Central 一起提供,并且可以作为 Gradle 依赖项自动安装。在本节中,我们将创建一个简单的应用程序,它只使用 Maven Central 加载 OpenCV。

  1. 打开 Android Studio,然后选择 Empty Views Activity (空视图活动) 创建空项目

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

  2. 设置项目:

    • 选择 Java 语言
    • 选择 Groovy DSL 构建配置语言
    • 选择版本号不小于 OpenCV 支持的 Minumum SDK。对于 4.9.0,最低 SDK 版本为 21。

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

  3. 编辑 OpenCV 库并将其添加到依赖项列表,如下所示:build.gradle
    依赖项 {
    实现“org.opencv:opencv:4.9.0”
    }
    4.9.0可以被官方发布的任何版本所取代。
  4. 在使用任何 OpenCV 函数之前,您必须先加载库。如果您的应用程序包含其他依赖于 OpenCV 的本机库,则应在 OpenCV 初始化加载它们。添加以下代码以在应用启动时加载库:
    如果 (OpenCVLoader.initLocal()) {
    Log.i(TAG, “OpenCV 加载成功”);
    } {
    Log.e(TAG, “OpenCV 初始化失败!”);
    (Toast.makeText(this“OpenCV 初始化失败!”, Toast.LENGTH_LONG)).show();
    返回;
    }
    喜欢这个:

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

  5. 选择要检查示例的设备,然后按按钮运行代码run

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

相机视图示例

在本节中,我们将扩展在上一节中创建的空 OpenCV 应用程序以支持相机。我们将拍摄相机帧并将它们显示在屏幕上。

  1. 告诉系统我们需要相机权限。将以下代码添加到该文件中:MyApplication/app/src/main/AndroidManifest.xml
    <使用权限 android:name=“android.permission.CAMERA”/>
    <使用功能 android:name=“android.hardware.cameraandroid:required=“false”/>
    <使用功能 android:name=“android.hardware.camera.autofocusandroid:required=“false”/>
    <使用功能 android:name=“android.hardware.camera.frontandroid:required=“false”/>
    <使用功能 android:name=“android.hardware.camera.front.autofocusandroid:required=“false”/>
    喜欢这个:

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

  2. 转到布局并删除带有文本“Hello World!”activity_main.xml

    使用 OpenCV 进行 Android 开发,opencv,android,人工智能

    这也可以通过从 XML 文件中删除块在代码或拆分模式下完成。TextView

  3. 将相机视图添加到布局中:

    1. 在布局描述中添加方案:
      xmlns:opencv=“http://schemas.android.com/apk/res-auto”
    2. 替换为小部件:TextVieworg.opencv.android.JavaCameraView
      <org.opencv.android.JavaCameraView
      安卓:layout_width=“fill_parent”
      安卓:layout_height=“fill_parent”
      android:visibility=“消失了”
      android:id=“@+id/tutorial1_activity_java_surface_view”
      opencv:show_fps=“真”
      opencv:camera_id=“任何” />
    3. 如果收到布局警告,请将值替换为 for 和 propertiesfill_parentmatch_parentandroid:layout_widthandroid:layout_height

    你会得到这样的代码:

    <FrameLayout xmlns:android=“http://schemas.android.com/apk/res/android”
    xmlns:tools=“http://schemas.android.com/tools”
    xmlns:opencv=“http://schemas.android.com/apk/res-auto”
    安卓:layout_width=“match_parent”
    安卓:layout_height=“match_parent” >
    <!-- [camera_view] -->
    <org.opencv.android.JavaCameraView
    安卓:layout_width=“fill_parent”
    安卓:layout_height=“fill_parent”
    android:visibility=“消失了”
    android:id=“@+id/tutorial1_activity_java_surface_view”
    opencv:show_fps=“真”
    opencv:camera_id=“任何” />
    <!-- [camera_view] -->
    </FrameLayout(框架布局)>
  4. 从 继承主类。CameraActivity 实现了 CV 应用程序所需的相机周边要求和其他一些实用程序。我们感兴趣的重写方法是 、 、 和org.opencv.android.CameraActivityonCreateonDestroyonPauseonResumegetCameraViewList
  5. 实现接口方法应返回包含渲染内容的对象。此示例仅返回用于预览的相机帧:org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2onCameraFrameMatreturn inputFrame.rgba();
  6. 分配对象:org.opencv.android.CameraBridgeViewBase
    • 它应该在应用程序启动(方法)时创建,并且此类应设置为侦听器onCreate
    • 在暂停/恢复 (, 方法) 时,它应该被禁用/启用onPauseonResume
    • 应在应用完成时禁用(方法)onDestroy
    • 应该在getCameraViewList
  7. 或者,您可以禁止手机调暗屏幕或锁定:

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    最后,你将获得类似于以下内容的源代码:

软件包 org.opencv.samples.tutorial1;
导入 org.opencv.android.CameraActivity;
导入 org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame;
导入 org.opencv.android.OpenCVLoader;
导入 org.opencv.core.Mat;
导入 org.opencv.android.CameraBridgeViewBase;
导入 org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2;
导入 android.os.Bundle;
导入 android.util.Log;
导入android.view.SurfaceView;
导入 android.view.WindowManager;
导入 android.widget.Toast;
导入 java.util.Collections;
导入 java.util.List;
公共Tutorial1Activity 扩展了 CameraActivity 实现 CvCameraViewListener2 {
private static final String TAG = “OCVSample::Activity”;
私人CameraBridgeViewBase mOpenCvCameraView;
公共教程1活动() {
Log.i(TAG, “实例化的新” + this.getClass());
}
@Override
public void onCreate(Bundle savedInstanceState) {
Log.i(TAG, “调用 onCreate”);
super.onCreate(savedInstanceState);
如果 (OpenCVLoader.initLocal()) {
Log.i(TAG, “OpenCV 加载成功”);
} {
Log.e(TAG, “OpenCV 初始化失败!”);
(Toast.makeText(this“OpenCV 初始化失败!”, Toast.LENGTH_LONG)).show();
返回;
}
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.tutorial1_surface_view);
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.tutorial1_activity_java_surface_view);
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
mOpenCvCameraView.setCvCameraViewListener(这个);
}
@Override
public void onPause()
{
super.onPause();
if (mOpenCvCameraView != 空)
mOpenCvCameraView.disableView();
}
@Override
public void onResume()
{
super.onResume();
if (mOpenCvCameraView != 空)
mOpenCvCameraView.enableView();
}
@Override
保护列表<?扩展 CameraBridgeViewBase> getCameraViewList() {
返回集合.singletonList(mOpenCvCameraView);
}
@Override
公共无效 onDestroy() {
super.onDestroy();
if (mOpenCvCameraView != 空)
mOpenCvCameraView.disableView();
}
@Override
public void onCameraViewStarted(int width, int height) {
}
@Override
公共无效 onCameraViewStopped() {
}
@Override
公共垫 onCameraFrame(CvCameraViewFrame inputFrame) {
返回 inputFrame.rgba();
}
}

就是这样!现在,您可以在设备上运行代码进行检查。

   在线教程

  • 麻省理工学院人工智能视频教程 – 麻省理工人工智能课程
  • 人工智能入门 – 人工智能基础学习。Peter Norvig举办的课程
  • EdX 人工智能 – 此课程讲授人工智能计算机系统设计的基本概念和技术。
  • 人工智能中的计划 – 计划是人工智能系统的基础部分之一。在这个课程中,你将会学习到让机器人执行一系列动作所需要的基本算法。
  • 机器人人工智能 – 这个课程将会教授你实现人工智能的基本方法,包括:概率推算,计划和搜索,本地化,跟踪和控制,全部都是围绕有关机器人设计。
  • 机器学习 – 有指导和无指导情况下的基本机器学习算法
  • 机器学习中的神经网络 – 智能神经网络上的算法和实践经验
  • 斯坦福统计学习

有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

使用 OpenCV 进行 Android 开发,opencv,android,人工智能

使用 OpenCV 进行 Android 开发,opencv,android,人工智能

人工智能书籍

  • OpenCV(中文版).(布拉德斯基等)
  • OpenCV+3计算机视觉++Python语言实现+第二版
  • OpenCV3编程入门 毛星云编著
  • 数字图像处理_第三版
  • 人工智能:一种现代的方法
  • 深度学习面试宝典
  • 深度学习之PyTorch物体检测实战
  • 吴恩达DeepLearning.ai中文版笔记
  • 计算机视觉中的多视图几何
  • PyTorch-官方推荐教程-英文版
  • 《神经网络与深度学习》(邱锡鹏-20191121)

  • 使用 OpenCV 进行 Android 开发,opencv,android,人工智能

第一阶段:零基础入门(3-6个月)

新手应首先通过少而精的学习,看到全景图,建立大局观。 通过完成小实验,建立信心,才能避免“从入门到放弃”的尴尬。因此,第一阶段只推荐4本最必要的书(而且这些书到了第二、三阶段也能继续用),入门以后,在后续学习中再“哪里不会补哪里”即可。

使用 OpenCV 进行 Android 开发,opencv,android,人工智能

第二阶段:基础进阶(3-6个月)

熟读《机器学习算法的数学解析与Python实现》并动手实践后,你已经对机器学习有了基本的了解,不再是小白了。这时可以开始触类旁通,学习热门技术,加强实践水平。在深入学习的同时,也可以探索自己感兴趣的方向,为求职面试打好基础。

使用 OpenCV 进行 Android 开发,opencv,android,人工智能

第三阶段:工作应用

使用 OpenCV 进行 Android 开发,opencv,android,人工智能

这一阶段你已经不再需要引导,只需要一些推荐书目。如果你从入门时就确认了未来的工作方向,可以在第二阶段就提前阅读相关入门书籍(对应“商业落地五大方向”中的前两本),然后再“哪里不会补哪里”。

 有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

使用 OpenCV 进行 Android 开发,opencv,android,人工智能

使用 OpenCV 进行 Android 开发,opencv,android,人工智能

使用 OpenCV 进行 Android 开发,opencv,android,人工智能文章来源地址https://www.toymoban.com/news/detail-818129.html

到了这里,关于使用 OpenCV 进行 Android 开发的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android开发配置OpenCV环境详细指南

    Android开发配置OpenCV环境详细指南 在进行Android开发时,我们经常需要使用图像处理库来实现各种功能。其中,OpenCV是一个强大且广泛应用的开源计算机视觉库。本文将详细介绍如何在Android开发环境中配置OpenCV,并附带相应的源代码和说明。 步骤一:下载OpenCV库文件 首先,我

    2024年02月08日
    浏览(36)
  • Android开发—基于OpenCV实现相机实时图像识别跟踪

    xmlns:opencv=“http://schemas.android.com/apk/res-auto” xmlns:tools=“http://schemas.android.com/tools” android:id=“@+id/activity_img_recognition” android:layout_width=“match_parent” android:layout_height=“match_parent” tools:context=“com.sueed.imagerecognition.CameraActivity” org.opencv.android.JavaCameraView android:id=“@+id/jcv”

    2024年04月17日
    浏览(21)
  • Android App开发超实用实例 | OpenCV在Android手机实现在图像上添加文本

     OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,它可以运行在Linux、Windows、Android和Mac OS等操作系统上。OpenCV原本由一系列 C 函数和少量 C++ 类构成,同时提供了Python等其他语言的接口,它实现了图像处理和计算机视觉方面的很多通用算法。下面这个实例演示了使用

    2024年02月03日
    浏览(35)
  • Android Studio开发之路 (五)导入OpenCV以及报错解决

    一、步骤 官网下载opencv包(我下的是4.7.0)并解压,openvc官网 先创建一个空项目,简单跑一下能正常输出helloworld 点击 file-new-Import Module 选择解压之后的opencv-android-sdk文件夹中的SDk文件夹, module name这个地方可以改成你想要的的名字,我是改成了opencv 4.加载完成之后看下图,

    2024年02月11日
    浏览(34)
  • Android 环境下OpenCV使用-- 环境搭建(一)

    1、OpenCV SDK下载 openCv官网下载 2、Android Studio 创建 C++ 工程 3、openCV的so库 加载项目中 src-main目录下新建 jniLibs 下载的openCv的sdk的 opencv-4.1.0-android-sdkOpenCV-android-sdksdknativelibs目录对应平台的so库复制进来 4、加载头文件 将sdk目录下边的头文件目录 include的头文件加载到项目中

    2024年02月15日
    浏览(26)
  • 学习笔记—Android studio导入OpenCV配置使用

    官网下载sdk,打开opencv官网,点击Android,完成后解压 https://opencv.org/ 解压后,文件夹下有这些文件 samples Android代码工程 sdk 包含opencv的Java的接口和JNI接口等 打开Android studio,选择模板,这时选择最后一项Native C++,然后进入配置界面。 这里注意你下载的Android-sdk版本来选择

    2024年02月07日
    浏览(28)
  • opencv android sdk 使用中的问题

    在build.gradle(:app)中添加以下内容 再在工程的build.gradel中添加如下内容 版本根据实际情况修改. 如下图 在opencv的build.gradle中添加工程的命名空间即可. 如下图 opencv build.gradle

    2024年02月10日
    浏览(27)
  • 使用 Clojure 进行 OpenCV 开发简介

    从 OpenCV 2.4.4 开始,OpenCV 支持使用与 Android 开发几乎相同的接口进行桌面 Java 开发。 Clojure 是由 Java 虚拟机托管的一种现代 LISP 方言,它提供了与底层 JVM 的完全互操作性。这意味着我们甚至应该能够使用 Clojure REPL(Read Eval Print Loop)作为底层 OpenCV 引擎的交互式可编程接口

    2024年01月16日
    浏览(36)
  • Android 使用OpenCV实现实时人脸识别,并绘制到SurfaceView上

    上篇文章 我们已经通过一个简单的例子,在 Android Studio 中接入了 OpenCV 。 之前我们也 在Visual Studio上,使用OpenCV实现人脸识别 中实现了人脸识别的效果。 接着,我们就可以将 OpenCV 的人脸识别效果移植到 Android 中了。 1.1 环境说明 操作系统 : windows 10 64 位 Android Studio 版本

    2024年02月10日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包