OpenCV源码Android端编译,用时三天,我编了个寂寞。。。

2023-11-06

学更好的别人,

做更好的自己。

——《微卡智享》

本文长度为1526,预计阅读4分钟

导语

全网首发微信二维码引擎Android平台移植》中有介绍OpenCV源码及扩展模块Android端的编译,其中扩展模块里的人脸细节特征点是准备要测试看看的,于是自己也是准备编译动态库,用了三天,编译了个寂寞。

编译结果

上图中可以看到,最终编译了一个libopencv_world.so的动态库,不过文件大小有250M的,如果集成到一个APK中,安装包巨大,完全不能用。所以说,还是编译了一个寂寞。

说起来为什么花了三天,主要还是因为编译最后一直没有生成libopencv_java4.so的动态库,大概知道原因,应该还是我系统环境的问题,等有个时间换台电脑再重新试下看看。这篇主要是讲讲这三天时间编译我都遇到了什么问题,及处理的心路历程。

心路历程

微卡智享

01

关于ANDROID_NATIVE_API_LEVEL

最开始这一填没填,系统默认的21,在编译到30%的时候终止了,具体哪一个我忘了,提示就是要求API要超过24才行,所以改为了26。

02

未安装ANT时编译

上面一步通过了后,然后继续编译到99%时又终止了,分析了一个是在创建Android Example的时候无法创建,反正也用不上例子,所以直接把对应的项勾掉去。

重新编译

编译完后可以看到,native的目录下没有libs的文件夹,只有staticlibs的,进去后全是静态库,完全没有我想到的libopencv_java4.so动态库。

03

配置JDK和ANT后编译

想到可能是没有安装ANT和配置JDK,所以才没有libopencv_java4.so,那我们就来解决这个问题。


于是下载安装了JDK和ANT,变做了相关配置,安装后配置也是没有问题。

重新Configure后,发现JAVA还是无法built,下面的Java wrappers也是自动为NO。研究了好久,包括一步步的看OpenCV源码里的cmakelist的步骤,大概判断了应该还是我的环境问题,但是找不出具体的原因来。

编译libopencv_world.so

微卡智享

编译过OpenCV源码的应该都知道,把OpenCV_world编译打勾后,会直接把所有的东西都打包时这个动态库里,不需要更多的文件了,本身我在Android使用OpenCV也都是用ndk的方式直接调动态库使用,所以就想到了按这个方式直接生成一个opencv_world得了。

配置Cmake

将BUILE_FAT_JAVA_LIB和BUILD_JAVA的勾都去掉

将BUILD_SHARED_LIBS项打上勾

将BUILD_opencv_world项打上勾

BUILD_ANDROID_EXAMPLES和BUILD_ANDROID_PROJECTS的勾去掉

将BUILD_PREF_TEST和BUILD_TESTS的勾去掉。

这些完成后直接编译后,就生成了文章开头那个250M的动态库,此时的内心是崩溃的,这东西完全不能用。最后还是要感谢呱呱,把他编译好armeabi-v7a和arm64-v8a的libopencv_java4.so发给了我,喜欢OpenCV或Android的朋友也推荐关注下。

扫描二维码

获取更多精彩

微卡智享

「 往期文章 」

.Net5中Swagger采用Attribute方式实现Api隐藏

C++ OpenCV透视变换改进---直线拟合的应用

.net5发布在Windows2008的几个注意事项

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV源码Android端编译,用时三天,我编了个寂寞。。。 的相关文章

  • Android.mk 与 Application.mk

    我对 Android mk 和 Application mk 的使用有点模糊 我尝试阅读 APPLICATION MK HTML ANDROID MK HTML 在NDK 附带的文档 http developer android com s
  • 为什么 doctype 不自动关闭

    提供了一个 xhtml 文档类型 例如 为什么这个标签本身允许非自关闭 根本不关闭 Aka为什么不是 它不是一个标签 元素 这是一个声明 这就是声明的语法 文档类型声明 http www w3 org TR REC xml sec prol
  • 您可以使用 CSS 阻止 标签加载其图像吗?

    有什么办法可以阻止 img 标签仅使用 CSS 加载其图像 我想避免使用 JavaScript 这似乎不起作用 Firebug 仍然显示图像加载 display none visibility hidden 否 CSS 只告诉浏览器内容应该
  • 之间有什么区别?

    有什么区别 b and strong i and em 在 HTML XHTML 中 你应该什么时候使用每一个 他们有对普通网络浏览器渲染引擎具有相同的效果 但是有一个根本区别它们之间 正如作者所写讨论列表帖子 https web arch
  • 如何在 ubuntu 20 中安装旧版本的 gcc -3 或 gcc-4

    我正在尝试安装旧版本的 gcc 4enter code here对于我的ubuntu创建构建目录 mkdir gcc build cd gcc build 下载源文件 wgethttp www netgull com gcc release
  • 非矩形 CSS 图像链接

    我有以下要求 大图像包含多个需要链接到其他页面的 热点 听起来很简单 我创建了一个简单的 html 页面 一个带有背景图像的 div 和使用带有图像精灵翻转的 CSS 的绝对定位链接 然而 现在我看到了另一张图像 热点不是方形的 而是不规则
  • XSD 到 XForms 以及 XForms 到 XSD 转换

    目前我正在努力解决两个问题 我从外部服务器接收到一个 XSD 文件 并且基于该文件我必须生成 XForm 通常 XSD 文件会导入许多其他 XSD 文件等等 我正在使用 XForm 构建器编写 GUI 当用户构建他的自定义 XForm 时
  • 在 Makefile 的先决条件列表中使用目标的目录路径

    我编写了一个脚本 它接收两个以 cfg 结尾的文件并输出一个以 cmp 结尾的文件 我想将其包含在我的 Makefile 中 因为一些源代码文件依赖于此 cmp 文件 在我的 Makefile 中 我想这样做 cmp cfg dir def
  • 使用 GNU make “从源代码树中”构建 C 程序

    我想使用 GNU make 工具为我的微控制器构建一个 C 项目 我想以一种干净的方式来做这件事 这样我的源代码在构建后就不会被目标文件和其他东西弄乱 想象一下我有一个名为 myProject 的项目文件夹 其中有两个文件夹 myProje
  • 构建 gradle 系统应用程序作为 AOSP 构建的一部分

    我有一个基于 AOSP 的自定义 ROM 并且正在开发一个系统应用程序 该应用程序在 ROM 构建期间打包 就像任何其他系统应用程序一样 是否可以将此应用程序切换为 gradle 样式应用程序 并在 AOSP 构建期间使用 gradle 构
  • 对 sf:: 的未定义引用

    我想用 C 制作 GUI 应用程序 发现 SFML 是一个不错的选择 幸运的是 我使用的是 Linux 所以 SFML 2 4 已经安装在我的系统上 所以我开始搜索一些教程并找到了一个制作简单窗口的教程 但是当我运行代码时 出现错误 提示未
  • 内联 svg 不显示在 xhtml 中

    我创建了一个带有内联 SVG 的 XHTML 文件 当测试为 XHTML 时 它不会显示 但当测试为 HTML 时 它会显示 我已经搜索过互联网并相信我已经指定了正确的名称空间等 但是 我很困惑为什么它没有显示 请帮助我理解我做错了什么 注
  • 截断段落前 100 个字符并隐藏段落的其余内容,以通过更多/更少链接显示/隐藏其余内容

    我有一个超过 500 个字符的段落 我只想获取最初的 100 个字符并隐藏其余部分 我还想在 100 个字符旁边插入 更多 链接 单击更多链接时 整个段落应显示并编辑文本 更多 到 更少 单击 更少 时 它应切换行为 段落是动态生成的 我无
  • 在 Mac OS X 上的 Makefile 中设置 PATH(但它适用于 Linux)

    我可以在 Linux 上的 Makefile 中设置 PATH 但不能在 Mac OS X 上设置 在 OS X 中 可以设置 PATH 但不会使用 这是一个演示 在带有 bash 4 1 2 1 release 和 GNU Make 3
  • 什么是“制定目标”?

    为什么我需要制作一个make target在能够构建我的源代码之前 更具体地说 什么是制定目标 http publib boulder ibm com infocenter rsdvhelp v6r0m1 index jsp topic o
  • 如何在使用cmake完成make后打印消息?

    我正在尝试使用 CMake 完成构建过程后打印消息 我只是想在之后通知用户make命令已完成 没有任何错误 我该怎么做 我试过add custom target 但我无法选择何时跑步 另外 我尝试过add custom command 它再
  • 避免重复 GNU Make 规则

    我一直在编写一个执行一些依赖项生成的 Makefile 我发现自己必须重复规则 因为 遗留 代码库包含以下内容的混合 cpp and cc文件 好像有点难看 无论如何 是否可以指定目标的先决条件可以是 cpp or cc files 所以而
  • 将环境变量从 Makefile 导出到用户态环境

    我正在研究如何从 Makefile 环境变量导出以在用户环境中公开 因此应该可以从用户 shell 访问从 Makefile 导出这些变量 我努力了make s export https www gnu org software make
  • 并行运行 make 时出错

    考虑以下制作 all a b a echo a exit 1 b echo b start sleep 1 echo b end 当运行它时make j2我收到以下输出 echo a echo b start a exit 1 b star
  • XHTML 和文本区域内的代码

    在我的一个使用文本区域进行提交的网站上 我的代码可以显示如下所示的内容

随机推荐

  • Arduino+sim800C家居安防火灾报警 拨打电话 发送短信例程程序

    家居安防报警器 参考程序 火灾报警 涉及用sim800c发短信 拨打电话通知 接线 Sim800c 3 3V gt Arduino 3 3V Sim800c GND gt Arduino GND Sim800c RX gt Arduino
  • BES2300x笔记(24) -- 如何进行软件加密保护

    哈喽大家好 这是该系列博文的第二十四篇 篇 lt lt 系列博文索引 快速通道 gt gt 以下内容基于原厂提供的文档整理润色 一 前言 由于当下知识产权意识的普遍淡薄 当我们开发一款产品 推向市场之后 如何能防止第三方破解代码 便成了维护
  • 【解决问题】idea的右上方工具栏不见了的解决办法

    前一天使用idea还正常的 第二天看idea的时候 idea右上方的工具栏不见了 截图如下 那么如何让她显示出来了呢 方案1 目标 显示在右上方 在3的前面勾选下 打钩的话就行 打钩后结果 方案2 目标 显示在左上方 在3出打钩 效果如下
  • git 清除所有untracked file

    上次合并分支的时候 出现了一些没见过的文件 有 orig等等 如下图 接下来 就是git的神奇操作命令 git clean f 将所有untracked file 一次性删除 就大功告成了
  • upf低功耗的一个简单的例子

    一 结构描述 这里是一个uart top模块里面例化了两个uart 分别给两个模块给了power switch 用于电源控制 对这两个模块分别进行隔离关断来写一个简单的upf 二 代码分析 1 电压域 create power domain
  • python闭包

    python语言中形成闭包的三个条件 缺一不可 1 必须有一个内嵌函数 函数里定义的函数 这对应函数之间的嵌套 例如下面在函数funx 里面又定义了一个funy 函数 2 内嵌函数必须引用一个定义在闭合范围内 外部函数里 的变量 内部函数引
  • [ERR] Node 192.168.1.77:7000 is not empty. Either the node already knows other nodes (check with CLU

    ERR Node 192 168 1 77 7000 is not empty Either the node already knows other nodes check with CLUSTER NODES or contains s
  • AWS大数据三种经典玩法

    目录 前言 1 AWS一站式大数据分析平台 2 让人不得不喜欢的AWS 优点 缺点 3 个人建议 4 文章说明 一 AWS大数据平台全家桶简介 1 一首 数据源 2 一尾 数据应用 3 中间 大数据体系 3 1导入组件 3 2数据处理组件
  • 我跟面试官说MySQL单表数据量不要超过两千万,面试官不信

    导读 作为一个合格的 DBA 在遇到线上单表数据量超过千万级别的时候 往往会建议用户通过分表来缩减单表数据量 当用户问为什么单表数据量不能超过千万时 DBA 往往会说 单表数据量超过千万 会影响查询性能 知其然而不知所以然 学习技术不能停留
  • rtsp采用MD5加密摘要认证的交互过程

    RTSP使用MD5加密认证代码实现 链接 https edu csdn net learn 38258 606141 spm 1003 2001 3001 4157 RTSP实时音视频传输介绍 文章中详细介绍了RTSP实时音视频传输的过程
  • 车企为何要造手机?

    去年这个时候 有一个很火的词叫 互联网造车 当时百度 小米 阿里 滴滴等互联网公司纷纷宣布造车 而今年一开年 业界又出来一个热词 叫 车企造手机 吉利宣布要投入100亿来造手机 计划于2023年推出产品 最近又传出 吉利正在收购魅族手机 蔚
  • Microsoft Dynamics CRM Server 2011安装配置

    基于公司需要 要在服务器 Server 2008 R2 上安装CRM 老板想要安装Microsoft Dynamics CRM Server 2011 于是就去微软官网上下载了试用版进行安装调试 Microsoft Dynamics CRM
  • Python: 实现评分算法(附完整源代码)

    Python 实现评分算法 附完整源代码 评分是衡量产品或服务质量的指标之一 在许多领域中 评分都是非常重要的 例如电影 饭店 应用程序等 为了将产品或服务分类以便进行比较 我们需要使用评分算法 在本篇文章中 我们将介绍如何使用Python
  • Java并行流:一次搞定多线程编程难题,让你的程序飞起来!

    前言 在日常的工作中 为了提高程序的处理速度 充分利用多核处理器的性能 我们需要手动编写多线程代码 但是多线程编程非常复杂 容易出现死锁 竞态条件等问题 给我们带来了很大的困扰 而 Java 并行流则提供了一种更加简单 易用 安全的并发编程
  • Python读取json文件

    文章目录 一 JSON文件 二 读取JSON数据 一 JSON文件 准备一个json文档数据 把对应的参数添加至此json文件下 通过python去获取对应的数据 代码如下 示例 item requests url body
  • java.lang.UnsatisfiedLinkError: 错误记录

    java lang UnsatisfiedLinkError No implementation found for int com baidu platform comjni map commonmemcache JNICommonMem
  • STM32系列(HAL库)——F103C8T6通过IIC/I2C方式读写AT24C02—(EEPROM 存储模块)

    1 软件准备 1 编程平台 Keil5 2 CubeMX 3 XCOM 串口调试助手 2 硬件准备 1 AT24C02模块 2 F1的板子 本例使用经典F103C8T6 3 ST link 下载器 4 USB TTL模块 5 杜邦线若干 3
  • 美赛论文格式基本要求

    Your Paper s Title Starts Here Please Center use Helvetica Arial 14 论文的题目从这里开始 用Helvetica Arial 14号 FULL First Author1 a
  • Java中加载配置文件的三种方式

    一 通过文件路径加载 该方式必须知道文件的真实路径 1 配置文件放置位置 2 具体代码如下 package cn sunft day01 reflect import java io FileInputStream import java
  • OpenCV源码Android端编译,用时三天,我编了个寂寞。。。

    学更好的别人 做更好的自己 微卡智享 本文长度为1526字 预计阅读4分钟 导语 全网首发微信二维码引擎Android平台移植 中有介绍OpenCV源码及扩展模块Android端的编译 其中扩展模块里的人脸细节特征点是准备要测试看看的 于是
Powered by Hwhale