使用 OpenCV 进行 Android 开发

embedded/2024/12/26 5:14:08/

在本节中,我们将创建一个简单的应用程序,它除了加载 OpenCV 之外什么都不做。在下一节中,我们将扩展它以支持相机。

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

  1. 打开 Android Studio 并选择Empty Views Activity创建空项目

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

  1. 点击文件->新建->导入模块…,选择OpenCV SDK路径

  1. 将模块名称设置为OpenCV并按Finish

OpenCV 还提供实验性的 Kotlin 支持。请将 Android Kotlin 插件添加到MyApplication/OpenCV/build.gradle文件:

plugins {id 'org.jetbrains.kotlin.android' version '1.7.10' #version may differ for your setup
}

如果不这样做,您可能会收到错误:

Task failed with an exception.
-----------
* Where:
Build file '/home/alexander/AndroidStudioProjects/MyApplication/opencv/build.gradle' line: 4* What went wrong:
A problem occurred evaluating project ':opencv'.
> Plugin with id 'kotlin-android' not found.
  1. 修复已在这里找到

  2. OpenCV 项目使用此功能。请在要阻止的文件buildConfig中启用它:MyApplication/OpenCV/build.gradleandroid

像这样:

  1. 如果不这样做,您可能会收到错误:

    JavaCameraView.java:15: error: cannot find symbol import org.opencv.BuildConfig; ^ symbol: class BuildConfig location: package org.opencv

    修复程序已在此处和此处找到

  2. 将模块添加到项目:
    • 单击文件 -> 项目结构... -> 依赖项 -> 所有模块 -> +(添加依赖项按钮)-> 模块依赖项

  • 选择app

  • 选择OpenCV

在使用任何 OpenCV 函数之前,您必须先加载库。如果您的应用程序包含其他依赖于 OpenCV 的本机库,则应在 OpenCV 初始化加载它们。添加以下代码以在应用程序启动时加载库:

        if (OpenCVLoader.initLocal()) {Log.i(TAG, "OpenCV loaded successfully");} else {Log.e(TAG, "OpenCV initialization failed!");(Toast.makeText(this, "OpenCV initialization failed!", Toast.LENGTH_LONG)).show();return;}

  1. 选择一个设备来检查样本,然后按下run按钮运行代码


http://www.ppmy.cn/embedded/143215.html

相关文章

一文说清:Git创建仓库的方法

0 引言 本文介绍如何创建一个 Git 本地仓库,以及与远程仓库的关联。 1 初始化仓库(git init) 1.1 概述 Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使…

SpringBoot小知识(4):高级配置知识与bean的绑定

一、EnableConfigurationProperties ConfigurationProperties注解在我们之前讲过,他是从配置中读取参数封装给实体类的一个注解。 那么EnableConfigurationProperties是个啥呢? EnableConfigurationProperties 是 Spring Framework 中用于启用基于配置文…

学习CSS第二天

学习文章目录 一.内部样式 一.内部样式 写在 html 页面内部&#xff0c;将所有的 CSS 代码提取出来&#xff0c;单独放在 <style> 标签中 语法&#xff1a; <style> h1 { color: red; font-size: 40px; } </style>注意点&#xff1a; <style> 标签理…

第十一课 Unity编辑器创建的资源优化_预制体和材质篇(Prefabs和Materials)详解

预制体(Prefabs) Unity中的预制体是用来存储游戏对象、子对象及其所需组件的可重用资源&#xff0c;一般来说预制体资源可充当资源模版&#xff0c;在此模版基础上可以在场景中创建新的预制体实例。 使用预制体的好处 由于预制体系统可以自动保持所有实例副本同步&#xff0c…

golang-基础知识-interface

1. 什么是interface 在go中&#xff0c;interface&#xff08;接口&#xff09;是一种抽象类型&#xff0c;用于定义某些方法的集合&#xff0c;而不具体实现这些方法。接口允许你指定一个类型应该提供哪些功能&#xff0c;但不关心具体实现是什么。 定义一个接口的基本语法如…

window下docker使用一些多媒体应用

首先下载docker之类的就不讲了&#xff0c; 科学下载了三个内容。 1.视频多媒体&#xff1a; 在新建的文件夹创建三个子文件夹&#xff08;cache&#xff0c;config&#xff0c;media&#xff09;,然后启动命令即可。 启动命令&#xff1a; docker run -d --nameJellyfin …

LeetCode 动态规划 打家劫舍 II

打家劫舍 II 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋&#xff0c;每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 &#xff0c;这意味着第一个房屋和最后一个房屋是紧挨着的。同时&#xff0c;相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻…

机器学习7_支持向量机_兵王问题

兵王问题描述 用SVM解决问题 国际象棋的规则&#xff1a; 兵&#xff1a;第一次向前可以走一格或两格&#xff0c;以后每次只能向前走一格&#xff0c;不能后退。 王&#xff1a;王被将死即告负。每次只能走一格。 兵王问题&#xff1a; 棋局上&#xff0c;黑方只剩一个王&…