热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

使用AndroidStudio创建OpenCV4.1.0项目的步骤

这篇文章主要介绍了使用AndroidStudio创建OpenCV4.1.0项目的步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、OpenCV 

OpenCV(开源计算机视觉库)是一个开源的计算机视觉和机器学习软件库,是一个基于C与C++的跨平台计算机视觉处理库。

二、下载

开发基于Andorid的计算机视觉的应用可以使用OpenCV 4.1.0-Android SDK:

从官方网站下载 OpenCV 4.1.0 For Android SDK

https://sourceforge.net/projects/opencvlibrary/files/4.1.0/opencv-4.1.0-android-sdk.zip/download

三、使用Android Studio 开发基于OpenCV 4.1.0的移动应用

(1)平台版本

Android Studio 3.2.1

 (2)新建一个Android项目

新建项目(支持C++)

(3)将OPENCV 4.1.0 Android SDK的java模块导入到项目中

a) 将下载的opencv-4.1.0-android-sdk.zip文件解压,解压后进入到“opencv-4.1.0-android-sdk\OpenCV-android-sdk\sdk”的目录下,有如下文件:

b)将java模块导入到已创建的项目中

c)将已经改名为opencv41Libs(命名自行定义)的java模块,即opencv41Libs模块修改对应的build.gradle文件

有三处需要注意:

  • 将文件中的 "apply plugin: 'com.android.application'"修改为“apply plugin: 'com.android.library'”
  • 将文件中的自动生成的“applicationId "org.opencv"”删除,因为opencv41Libs模块是作为库存在而不是应用存在
  • 将compileSdkVersion 、buildToolsVersion、minSdkVersion 、targetSdkVersion 属性值的设置与app对应的build.gradle文件的配置一致。

例如app对应的build.gradle为:

apply plugin: 'com.android.application'

android {
  compileSdkVersion 28
  defaultConfig {
    applicationId "app.userhu2012.test"
    minSdkVersion 27
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    externalNativeBuild {
      cmake {
        cppFlags "-frtti -fexceptions"
      }
    }
  }
  buildTypes {
    release {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }
  externalNativeBuild {
    cmake {
      path "CMakeLists.txt"
    }
  }
}

则opencv41Libs对应的build.gradle文件配置如下:

apply plugin: 'com.android.library'

android {
  compileSdkVersion 28
  buildToolsVersion "28.0.3"

  defaultConfig {
    //applicationId "org.opencv"
    minSdkVersion 27
    targetSdkVersion 28
  }

  buildTypes {
    release {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
  }
}

d)配置libs库

为项目app的src/main目录下创建一个jniLibs目录(如果没有的话)

将opencv 4.1.0 android sdk中的opencv-4.1.0-android-sdk\OpenCV-android-sdk\sdk\native\libs库的所有架构文件复制到jniLibs目录中

再到项目app模块对应的build.gradle进行配置,增加jniLibs.srcDirs参数

sourceSets{
  main{
    jniLibs.srcDirs = ['src/main/jniLibs']
  }
}

以及配置支持的ndk类型,如下图所示,把已知的架构包写到app对应的build.gradle中

然后配置项目app的依赖项目,选择“文件”-》“Project Structure”,然后设置app模块的的依赖模块,如下图所示:

选择“OK",app模块对应的build.gradle的文件如下所示:

apply plugin: 'com.android.application'
android {
  compileSdkVersion 28
  defaultConfig {
    applicationId "app.userhu2012.test"
    minSdkVersion 27
    targetSdkVersion 28
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    externalNativeBuild {
      cmake {
        cppFlags "-frtti -fexceptions"
      }
    }
    ndk{
      abiFilters "arm64-v8a","armeabi-v7a","x86","x86_64"
    }
  }
  buildTypes {
    release {
      minifyEnabled false
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }
  sourceSets{
    main{
      jniLibs.srcDirs = ['src/main/jniLibs']
    }
  }
  externalNativeBuild {
    cmake {
      path "CMakeLists.txt"
    }
  }
}

dependencies {
  implementation fileTree(include: ['*.jar'], dir: 'libs')
  implementation 'com.android.support:appcompat-v7:28.0.0'
  testImplementation 'junit:junit:4.12'
  androidTestImplementation 'com.android.support.test:runner:1.0.2'
  androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
  implementation project(':opencv41Libs')
}

这样配置就可以使用Android Studio创建OpenCV 4.1.0 项目。

到此这篇关于使用Android Studio创建OpenCV4.1.0 项目的步骤的文章就介绍到这了,更多相关Android Studio创建OpenCV 内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 提升Android开发效率:Clean Code的最佳实践与应用
    在Android开发中,提高代码质量和开发效率是至关重要的。本文介绍了如何通过Clean Code的最佳实践来优化Android应用的开发流程。以SQLite数据库操作为例,详细探讨了如何编写高效、可维护的SQL查询语句,并将其结果封装为Java对象。通过遵循这些最佳实践,开发者可以显著提升代码的可读性和可维护性,从而加快开发速度并减少错误。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • a16z深入解析:代币设计的常见误区、优化策略及未来趋势分析
    a16z深入解析:代币设计的常见误区、优化策略及未来趋势分析 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • 机器学习中的标准化缩放、最小-最大缩放及鲁棒缩放技术解析 ... [详细]
  • VC维在机器学习中的应用与解析
    VC维在机器学习中的应用与解析VC维是指在机器学习中,一个假设空间能够正确分类的最大样本数量。具体而言,如果一个假设空间能够将N个样本以所有可能的 \(2^N\) 种方式完全分开,则称该假设空间具有N的VC维。VC维是衡量模型复杂度的重要指标,对于理解模型的泛化能力和过拟合风险具有重要意义。本文详细探讨了VC维的定义、计算方法及其在机器学习中的应用,并通过实例分析展示了其在模型选择和评估中的关键作用。 ... [详细]
  • 深入浅出解读奇异值分解,助你轻松掌握核心概念 ... [详细]
  • Hired网站最新发布的开发者调查显示,Python 语言继续受到开发者的广泛欢迎,而 PHP 则被评为最不受欢迎的语言。该报告基于 Hired 数据科学团队对 13 个城市中 9800 名开发者的调查数据,深入分析了当前编程语言的使用趋势和开发者偏好。此外,报告还探讨了其他热门语言如 JavaScript 和 Java 的表现,并提供了对技术招聘市场的洞见。 ... [详细]
  • 中国学者实现 CNN 全程可视化,详尽展示每次卷积、ReLU 和池化过程 ... [详细]
  • 在更换电脑或重装系统时,用户经常需要处理诸如备份收藏夹、电子邮件、用户配置文件和常用文档等任务。尽管这些操作并不复杂,但却相当繁琐。本文介绍了一种利用Windows 7中的“轻松传送”功能,高效便捷地在两台电脑之间同步数据的方法,大大简化了这一过程。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • 在关系型数据库中,数据约束是指在向数据表中插入数据时必须遵循的限制条件。在MySQL和MariaDB中,常见的数据约束包括主键约束、唯一键约束、外键约束以及非空约束等。这些约束确保了数据的完整性和一致性,是数据库管理中的重要组成部分。通过合理设置和使用这些约束,可以有效防止数据冗余和错误,提升数据库的可靠性和性能。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
author-avatar
mobiledu2502856973
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有