当前位置: 首页 > news >正文

【配置教程】新版OpenCV+Android Studio环境配置(4.11测试通过)

在 Android Studio 中连接新版 OpenCV(4.11)

很多教程都无法正常在新版工作,因此这里我更新一下教程。后面会再写一个如何加入cpp的教程。


一、准备工作

  1. 下载 OpenCV Android SDK

    • 访问:https://opencv.org/releases/
    • 下载如 OpenCV-4.x.x-android-sdk.zip
    • 解压至任意目录,例如:~/Android/OpenCV-android-sdk
  2. 安装 Android Studio

    • https://developer.android.com/studio

二、新建 Android 项目

  1. 打开 Android Studio,选择 New Project
  2. 使用 Empty Activity
  3. 输入项目名,例如 OpenCVTest
  4. 设置语言为 JavaKotlin(建议使用 Java)
  5. 选择合适的最小 API Level(建议 API 21 或更高)

三、集成 OpenCV 库

方式一:使用 OpenCV SDK 模块(推荐)

  1. 导入 OpenCV SDK 模块

    • 在 Android Studio 中右键项目根目录 > New > Import Module
    • 路径选择:<OpenCV-android-sdk>/sdk/java
    • Module name 保持默认::openCVLibrary4
  2. 将 OpenCV 模块添加到你的 app 中

    编辑 settings.gradle

    include ':app', ':openCVLibrary4'
    

    编辑 app/build.gradle

    dependencies {implementation project(':openCVLibrary4')
    }
    

四、配置 Native 支持(可选)

如果你需要使用 OpenCV 的 C++ 接口(如通过 JNI),可添加 NDK 支持。

  1. 启用 C++ 支持

    • 在新建项目时勾选“Include C++ Support”,或
    • 手动添加 CMakeLists.txt 与 JNI 源码
  2. 编辑 CMakeLists.txt

    cmake_minimum_required(VERSION 3.4.1)set(OpenCV_DIR <OpenCV-android-sdk>/sdk/native/jni)
    find_package(OpenCV REQUIRED)add_library(native-lib SHARED native-lib.cpp)target_link_libraries(native-lib ${OpenCV_LIBS} log)
    
  3. 配置 build.gradle

    externalNativeBuild {cmake {path "src/main/cpp/CMakeLists.txt"}
    }sourceSets {main {jniLibs.srcDirs = ['<OpenCV-android-sdk>/sdk/native/libs']}
    }
    

五、加载 OpenCV 库

MainActivity.java 中添加如下代码:

import org.opencv.android.OpenCVLoader;
import android.util.Log;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private static final String TAG = "OpenCV";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if (!OpenCVLoader.initDebug()) {Log.e(TAG, "OpenCV initialization failed!");Toast.makeText(this, "OpenCV initialization failed!", Toast.LENGTH_LONG).show();} else {Log.i(TAG, "OpenCV loaded successfully");}}
}

六、验证配置

  1. 运行 app,查看 Logcat 是否输出:

    OpenCV loaded successfully
    
  2. 若提示失败,确认:

    • jniLibs 是否包含了合适架构的 .so 文件
    • OpenCVLoader.initDebug() 被正确调用

七、调试和注意事项

  • initDebug() 仅适用于调试模式。发布版本请使用 OpenCV Manager 或静态初始化。

  • 可用命令确认 .so 文件架构是否匹配:

    file libopencv_java4.so
    
  • 若使用 Kotlin,语法略有差异,注意 API 兼容性。


八、附录

JNI 示例:

#include <jni.h>
#include <string>
#include <opencv2/core.hpp>extern "C" JNIEXPORT jstring JNICALL
Java_com_example_opencvtest_MainActivity_stringFromJNI(JNIEnv* env,jobject /* this */) {cv::Mat mat = cv::Mat::eye(3, 3, CV_8UC1);std::string msg = "OpenCV Mat:\n" + std::to_string(mat.rows) + "x" + std::to_string(mat.cols);return env->NewStringUTF(msg.c_str());
}

九、参考链接

  • OpenCV for Android 官方文档
  • OpenCV GitHub
  • NDK 配置文档

相关文章:

  • MySQL 中 DISTINCT 去重的核心注意事项详解
  • 【沉浸式解决问题】Mysql中union连接的子查询是否并行执行
  • Python训练营打卡Day50
  • 4 Studying《ARM System Developer’s Guide》9-15
  • 【时时三省】(C语言基础)关于变量的声明和定义
  • RAG轻松通-P1:分块
  • 游戏盾能够发挥哪些作用?
  • 文献阅读|基于PSMA PET/CT使用机器学习增强前列腺癌的诊断与风险评估
  • 期末作业swing水果店管理系统
  • 2.4 Python基础概念:通过一个文字冒险游戏学习编程
  • Linux网络-基础概念
  • Nginx代理缓存静态资源
  • 爬虫技术:数据获取的利器与伦理边界
  • 【CompletableFuture】常用方法(三)
  • JetsonNano详细使用笔记(二)
  • CentOS 7 虚拟机网络配置异常 典型问题:启动了NetworkManager但是network无法启动
  • 家用旧电脑搭建小型服务器操作步骤教程:一步一步本地部署到公网访问
  • 升级OpenSSL和OpenSSH 修复漏洞
  • InputStream重复读取导致文件损坏问题解决方案
  • 【C分解多位整数输出1位数2各位空格最后无空格3倒序/读取指定字符否则退出】2022-6-29
  • 普通电脑怎么做网站服务器吗/日喀则网站seo
  • 陕西企业网站建设/seo百度网站排名软件
  • 做企业网站流程/百度网站排名seo
  • 做网站如何与网络公司沟通/抖音怎么推广引流
  • 回老家做PHP网站/线上推广外包公司
  • 独立网站建设费用列表/互联网广告推广是什么