opencv2.4 android编译

背景见我的前一篇博客:opencv 编译Simple,转眼6年过去了,最近有个东西想尝试基于opencv来做,所以有本文。

一些背景知识

  1. opencv1.1已经不再维护,目前只能从github中找到一个历史的版本: https://github.com/archith/opencv_1.1
  2. opencv2.x 3.x 4.x 5.x 都有完善的cmake编译脚本,编译起来都比较容易。参考我前一篇博客
  3. opencv2.x 中含有nonfree的模块,比如surf,sirf。这部分代码在后面的仓库中,被移动到 opencv_contrib 中。
  4. https://opencv.org/releases/ 中提供的库都没有包含nonfree的模块,如果需要使用nofree的模块需要自己拉代码下来编译。
  5. 一些基于release做二次处理的库,比如https://github.com/nihui/opencv-mobile 也是没有包含nonfree的模块。

opencv2.4.13.7 for android

ubuntu22 ubuntu18

Before start

# ubuntu 22
sudo apt-get install libgtk2.0-dev 

Get souce code

git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 2.4.13.7

Make for android

download ndk: https://developer.android.google.cn/ndk/downloads?hl=zh-cn

export ANDROID_NDK=/home/yeshen_org/Android/android-ndk-r20b && \
export ANDROID_SDK_ROOT=/home/yeshen_org/Android/Sdk && \
export ANDROID_SDK_ROOT=/home/yeshen_org/Android/Sdk && \
export ANDROID_NATIVE_API_LEVEL=24 && \
export STRIP=/home/yeshen_org/Android/android-ndk-r20b/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip# arm64-v8a
rm -rf build-arm64 && mkdir build-arm64 && cd build-arm64
cmake -DCMAKE_TOOLCHAIN_FILE=/home/yeshen_org/Android/android-ndk-r20b/build/cmake/android.toolchain.cmake \
-DANDROID_TOOLCHAIN=clang++ -DANDROID_ABI=arm64-v8a \
-D CMAKE_BUILD_TYPE=Release -D ANDROID_NATIVE_API_LEVEL=24 \
-D WITH_CUDA=OFF -D WITH_MATLAB=OFF \
-D BUILD_ANDROID_EXAMPLES=OFF -D BUILD_DOCS=OFF \
-D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF \
-D ANDROID_STL=c++_shared -D BUILD_SHARED_LIBS=ON \
-D BUILD_opencv_objdetect=ON -D BUILD_opencv_video=ON \
-D BUILD_opencv_videoio=ON -D BUILD_opencv_features2d=ON \
-D BUILD_opencv_flann=ON -D BUILD_opencv_highgui=ON \
-D BUILD_opencv_ml=ON -D BUILD_opencv_photo=ON \
-D BUILD_opencv_python=OFF \
-D BUILD_androidcamera=OFF \
-D BUILD_opencv_legacy=ON \
-D BUILD_opencv_ocl=ON \
-D BUILD_opencv_gpu=ON \
-DBUILD_ANDROID_PROJECTS=OFF ..
make -j8
# see lib/arm64-v8a# armeabi-v7a
rm -rf build-arm32 && mkdir build-arm32 && cd build-arm32
cmake -DCMAKE_TOOLCHAIN_FILE=/home/yeshen_org/Android/android-ndk-r20b/build/cmake/android.toolchain.cmake \
-DANDROID_TOOLCHAIN=clang++ -DANDROID_ABI=armeabi-v7a \
-D CMAKE_BUILD_TYPE=Release -D ANDROID_NATIVE_API_LEVEL=24 \
-D WITH_CUDA=OFF -D WITH_MATLAB=OFF \
-D BUILD_ANDROID_EXAMPLES=OFF -D BUILD_DOCS=OFF \
-D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF \
-D ANDROID_STL=c++_shared -D BUILD_SHARED_LIBS=ON \
-D BUILD_opencv_objdetect=ON -D BUILD_opencv_video=ON \
-D BUILD_opencv_videoio=ON -D BUILD_opencv_features2d=ON \
-D BUILD_opencv_flann=ON -D BUILD_opencv_highgui=ON \
-D BUILD_opencv_ml=ON -D BUILD_opencv_photo=ON \
-D BUILD_opencv_python=OFF \
-D BUILD_androidcamera=OFF \
-D BUILD_opencv_legacy=ON \
-D BUILD_opencv_ocl=ON \
-D BUILD_opencv_gpu=ON \
-DBUILD_ANDROID_PROJECTS=OFF ..
make -j8
# see lib/armeabi-v7a# x86
rm -rf build-x86 && mkdir build-x86 && cd build-x86
cmake -DCMAKE_TOOLCHAIN_FILE=/home/yeshen_org/Android/android-ndk-r20b/build/cmake/android.toolchain.cmake \
-DANDROID_TOOLCHAIN=clang++ -DANDROID_ABI=x86 \
-D CMAKE_BUILD_TYPE=Release -D ANDROID_NATIVE_API_LEVEL=24 \
-D WITH_CUDA=OFF -D WITH_MATLAB=OFF \
-D BUILD_ANDROID_EXAMPLES=OFF -D BUILD_DOCS=OFF \
-D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF \
-D ANDROID_STL=c++_shared -D BUILD_SHARED_LIBS=ON \
-D BUILD_opencv_objdetect=ON -D BUILD_opencv_video=ON \
-D BUILD_opencv_videoio=ON -D BUILD_opencv_features2d=ON \
-D BUILD_opencv_flann=ON -D BUILD_opencv_highgui=ON \
-D BUILD_opencv_ml=ON -D BUILD_opencv_photo=ON \
-D BUILD_opencv_python=OFF \
-D BUILD_androidcamera=OFF \
-D BUILD_opencv_legacy=ON \
-D BUILD_opencv_ocl=ON \
-D BUILD_opencv_gpu=ON \
-DBUILD_ANDROID_PROJECTS=OFF ..
make -j8
# see lib/x86

github

https://github.com/wuyisheng/opencv-android

参考

  1. latest-android-ndk

玩~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/190280.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一名高阶程序员的专业养生指南

前言 都说程序员是一份脑力活儿,基本用不上身体,其实这是一种典型的偏见。程序员能够高效高质的完成编码工作,很大程度上依赖一个健康强壮的身体。 正文 作为一名高阶程序员,保持良好的健康状态对于提高工作效率和生活质量都非…

网络和Linux网络_8(传输层)TCP协议_续(流量控制+滑动窗口+拥塞控制+紧急指针+listen第二个参数)

目录 1. 流量控制 2. 滑动窗口 2.1 滑动窗口概念 2.2 滑动窗口模型详解 高速重发控制(快重传) 3. 拥塞控制和拥塞窗口 4. 延迟应答 5. 捎带应答 6. 面向字节流 7. 粘包问题 8. 16位紧急指针 9. listen的第二个参数 10. TCP总结异常情况与UD…

设置MATLAB启动时弹到上次退出时的工作文件夹

前言 每次关机前退出matlab后,下次打开matlab想完成剩余的工作,还需要回忆工作文件夹,或者依据上次打开的m文件之类的点击跳转,一次两次觉得没什么,多了就觉得很麻烦反感,参考官方知乎博主的解答&#xff…

详细介绍torch中的from torch.utils.data.sampler相关知识

PyTorch中的torch.utils.data.sampler模块提供了一些用于数据采样的类和函数,这些类和函数可以用于控制如何从数据集中选择样本。下面是一些常用的Sampler类和函数的介绍: Sampler基类: Sampler是一个抽象类,它定义了一个__iter_…

【SpringCloud】设计原则之前后端分离与版本控制

一、设计原则之前后端分离 在传统的 Web 应用开发中,大多数的程序员会将浏览器作为前后端的分界线 将浏览器中用户进行页面展示的部分称之为前端,而将运行在服务器,为前端提供业务逻辑和数据准备的所有代码统称为后端 由于前后端分离这个…

MQTT分析——CONNECT为例子

源代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Net.Sockets;namespace ConsoleApp1 {class Program{static void Main(string[] args){Connect();}/// <summary>/// 向…

Vue3中的动态组件,使用动态组件实现页面的切换。

目录 动态组件 本文主要介绍Vue3中的动态组件&#xff0c;使用动态组件实现页面的切换。 动态组件 在Vue3中&#xff0c;动态组件是通过<component>元素来实现的。动态组件可以根据所设置的组件名称动态地渲染不同的组件。 动态组件可以通过以下步骤来使用&#xff1a;…

SQL Server 2016(在Products表中查询数据)

1、实验环境。 以实验案例一的结果为环境。 2、需求描述。 【1】查询成本低于10元的水果信息。 【2】将所有蔬菜的成本上调1源。 【3】查询成本大于3元并小于40元的产品信息&#xff0c;并按照成本从高到低的顺序显示结果。 【4】查询成本最高的5个产品信息。 【5】查询有…

房产中介管理信息系统的设计与实现

摘 要 随着房地产业的开发&#xff0c;房产中介行业也随之发展起来&#xff0c;由于房改政策的出台&#xff0c;购房、售房、租房的居民越来越多&#xff0c;这对房产中介部门无疑是一个发展的契机。本文结合目前中国城市房产管理的实际情况和现阶段房屋产业的供求关系对房产中…

基于低代码平台开发应用程序

目录 低代码介绍 预研目标 预研产品 1.业务流程 2.用户权限 3.统计图表 4.大屏设计 5.第三方登录 6.分布式调度 小结 近几年&#xff0c;一直对低代码平台有所耳闻&#xff0c;目前已经对低代码平台有了一定的认识&#xff0c;如果能通过一个可视化的配置页面就能完成前端开发&…

Sock0s1.1

信息收集 探测存活主机 发现存活主机为192.168.217.133 探测开放端口 nmap -sT -p- 192.168.217.133 -oA ./ports 发现两个端口开放&#xff0c;分别是22 3128&#xff0c;同时探测到了8080端口&#xff0c;但是显示是关闭的状态。 UDP端口探测 nmap -sU --top-ports 20 1…

linux学习资源

linux书籍资源&#xff08;pdf版&#xff09;&#xff1a; 有需要的请在评论区留言。 《Linux Basics for Hackers》 kaiwan的三部曲&#xff1a; 《Hands-On System Programming with Linux》 《Linux Kernel Programming》 《Linux Kernel Programming Part 2》 《Ma…

编程好处、系统介绍、app演示

编程视频教学地址&#xff1a; 1、编程好处 1.1、自主开发 类似微信、qq等软件应用&#xff0c;解决人们日常生活问题 例如&#xff1a; 1&#xff09;你可以&#xff0c;自己开发一个网站&#xff0c;管理自己的日常生活照片&#xff0c;防止哪一天手机掉了或丢了&#xff0…

【动手学深度学习】(八)数值稳定和模型初始化

文章目录 一、理论知识 一、理论知识 1.神经网络的梯度 考虑如下有d层的神经网络 计算损失l关于参数Wt的梯度&#xff08;链式法则&#xff09; 2.数值稳定性常见的两个问题 3.梯度爆炸 4.梯度爆炸的问题 值超出阈值 对于16位浮点数尤为严重 对学习率敏感 如果学习率太大…

CKafka 一站式搭建数据流转链路,助力长城车联网平台降低运维成本

关于长城智能新能源 长城汽车是一家全球化智能科技公司&#xff0c;业务包括汽车及零部件设计、研发、生产、销售和服务&#xff0c;旗下拥有魏牌、哈弗、坦克、欧拉及长城皮卡。2022年&#xff0c;长城汽车全年销售1,067,523辆&#xff0c;连续7年销量超100万辆。长城汽车面向…

Oracle:左连接、右连接、全外连接、(+)号详解

目录 Oracle 左连接、右连接、全外连接、&#xff08;&#xff09;号详解 1、左外连接&#xff08;LEFT OUTER JOIN/ LEFT JOIN&#xff09; 2、右外连接&#xff08;RIGHT OUTER JOIN/RIGHT JOIN&#xff09; 3、全外连接&#xff08;FULL OUTER JOIN/FULL JOIN&#xff0…

LeetCode哈希表:最长连续序列

LeetCode哈希表&#xff1a;最长连续序列 题目描述 给定一个未排序的整数数组 nums &#xff0c;找出数字连续的最长序列&#xff08;不要求序列元素在原数组中连续&#xff09;的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1&#xff1a; 输入&…

electerm下载和安装

electerm下载和安装 一、概述 electerm 是一款免费开源、基于electron/ssh2/node-pty/xterm/antd/ subx等libs的终端/ssh/sftp客户端(linux, mac, win)。 而且个人觉得electerm界面更好看一些&#xff0c;操作都是类似的。 二、下载安装 下载地址&#xff1a;https://elec…

算法基础四

括号生成 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 示例 1&#xff1a; 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”] 示例…

vue2 -- 封装 echarts 基础组件

文章目录 🍉1:传递 option 方式🍍1.1 开发环境🍍1.2 创建基础文件🍍1.3 页面使用 -- 桑基图🍍1.4 旭日图🍍1.5 图形组件 graphic🍍1.6 富文本 rich🍉1:传递 option 方式 🍍1.1 开发环境 echarts^5.0.1vue~2.6.10nodev12.14.0🍍1.2 创建基础文件 创建 sr…