Android NDK

搭建Android+QT+OpenCV环境,实现“单色图片着色”效果

一世执手 提交于 2020-04-14 12:00:48
【推荐阅读】微服务还能火多久?>>> OpenCV是我们大家非常熟悉的图像处理开源类库;在其新版本将原本在Contrib分库中的DNN模块融合到了主库中,并且更新了相应文档。这样我们就能够非常方便地利用OpenCV实现一些属于DeepLearning范畴的效果,比如“超级分辨率”“单色图片着色”“色彩迁移”等。当我们想把软件处理的平台由PC机转移到嵌入式平台和手机上的时候,QT也是能和OpenCV配合地非常好的平台。在这里,我具体研究了如何搭建Android+QT+OpenCV环境,实现“单色图片着色”效果;并将相关内容整理如下,希望能够对有这方面需求的工程师提供帮助。 一、环境配置 首先我们面临的问题是工具版本的选择,虽然我们已经确定了Android+QT+OpenCV的基本软件结构,但是在每一个环节都需要选择具体的版本。 Android需要选择的是sdk和ndk的版本,我这里使用的是Android10(API29)+android-ndk-r20的组合,基本上是现在(2019年9月)最新的组合了; QT需要选择的是QT和QT Creator,我这里选择的是QT 5.13.1+QT Creator 4.10.0,同样是 现在(2019年9月)最新的组合; OpenCV用于Android的话,官方有Prebuild版本,我这里采用的是opencv-4.1.0-android-sdk

飞桨手势识别带你玩转神庙逃亡

删除回忆录丶 提交于 2020-04-05 17:39:15
随着经济社会的进步,人们对美好生活的追求也不断地刺激着电子娱乐行业的发展。但这些应用场景的人机交互方式却一直被束缚在通过键盘、鼠标、触摸屏的物理接触方式上。这些传统的交互方式将玩家的操作范围局限在简单的二维平面空间,也限制了游戏开发者创意的发挥。因此,我们引入了一种新的人机交互模式——手势识别交互。 手势交互方式符合人类思维逻辑,具有自然性和直观性等特点。使用者不需要有过高的门槛,便可以很好地体验到人机交互的乐趣。手势识别技术具有良好的应用前景——包括电子娱乐、智能家居、VR及自动驾驶等热点领域。这个项目设计的目的就是实现简单直观的人机交互方式,并促使该技术和产品在未来大规模民用成为可能。 我们的项目基于飞桨及其高性能端侧推理引擎Paddle Lite开发,实现了在基于Android系统的手机、平板电脑、嵌入式开发板上利用手势来实时控制贪吃蛇、神庙逃亡、地铁跑酷等交互式游戏,并可在大屏幕端进行投屏展示。 下载安装命令 ## CPU版本安装命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle ## GPU版本安装命令 pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu 项目内容

Android NDK c创建新的线程

独自空忆成欢 提交于 2020-03-14 20:17:21
在jni的c/c++层创建一个新的线程只需要3步: 1.导入库 #include<pthread.h> 2.写好线程要做的事 void* run_1(void*); void* run_1(void* args){ ... } 3.调用方法 pthread_t thread_1; pthread_create(&thread_1,NULL,run_1,args); /////////////////////////////////////////////////////////////////////////////////// 但是这样的线程,缺少了JNIEnv指针,好像干不了什么事,所以就要做这个基础上,得到JNIEnv指针,并将该线程依附于java虚拟机之上,这样这个线程像java层过来的线程一样,能够干很多事情。 官方文档关于attachCurrentThread()的说明,好像勉强看得懂,就翻译一下试试。。。 The JNI interface pointer (JNIEnv) is valid only in the current thread. Should another thread need to access the Java VM, it must first call AttachCurrentThread() to attach itself to

Java中的原生关键字是什么?

狂风中的少年 提交于 2020-02-27 08:59:04
在玩 这个谜题 (这是Java关键字琐事游戏)时,我遇到了 native 关键字。 Java中的native关键字用于什么? #1楼 实现本机代码的函数被声明为本机。 Java本机接口(JNI)是一个编程框架,使在Java虚拟机(JVM)中运行的Java代码能够调用本机应用程序(特定于硬件和操作系统平台的程序)和编写的库,并由它们进行调用。其他语言,例如C,C ++和汇编语言。 http://en.wikipedia.org/wiki/Java_Native_Interface #2楼 native是java中的关键字,它用于使未实现的结构(方法)像抽象的一样,但是它将依赖于平台(例如本机代码)并从本机堆栈而不是java堆栈执行。 #3楼 NATIVE是非访问修饰符。它只能应用于METHOD。 它指示方法或代码的PLATFORM-DEPENDENT实现。 #4楼 最小的可运行示例 Main.java public class Main { public native int square(int i); public static void main(String[] args) { System.loadLibrary("Main"); System.out.println(new Main().square(2)); } } Main.c #include <jni.h>

linux下将Python3解释器交叉编译移植到android平台

我是研究僧i 提交于 2020-02-27 04:49:19
已知资料: http://www.srplab.com/cn/files/others/compile/cross_compiling_python_for_android.html Cross Compiling Python for Android https://m.2cto.com/kf/201511/448789.html 在arm上使用python-2.7.10 上述资料主要是在移植python2.7版本,具体移植python3的版本资料并不多。 起初打算移植python3.5.6版本,但是发现python3.5.6的移植性似乎不好,在解决完python主程序和libpython3.5.so的编译后,所有扩展均因为各种找不到c函数或者找不到python的对象或函数名之类的问题无法编译。后决定编译python3.7.1版本。记录如下。 编译记录: 源码从python.org下载。 首先编译Linux版本的Python3.7.1并安装。我选择安装到~/opt目录下,以加入环境变量的形式替代系统使用的python3.5。命令如下: ~/projects tar xvf ~/Download/Python-3.7.1.tar.xz -C . ~/projects cd Python-3.7.1 ~/projects/Python-3.7.1 mkdir build.pc ~

Cmake和NdkBuild方式链接交叉编译的动态库-->杂记

断了今生、忘了曾经 提交于 2020-02-26 03:24:48
前提介绍: a.加上extern "C"后,会指示编译器这部分代码按C语言(而不是C++)的方式进行编译 b.https://developer.android.google.cn/ndk/guides/android_mk:官方Android.mk介绍指南 c.看动态库的依赖库有哪些: $ndk64Readelf -d libplay.so d.看动态库定义的方法:$ndkNm64 -D libplay.soo e.compile 4 steps :(gcc xxx.c -o xxx) gcc -E xxx.c -o xxx.i 预处理 gcc -S xxx.i -o xxx.s 汇编 gcc -c xxx.s -o xxx.o 机器代码编译 gcc -C xxx.o -o xxx.a 链接(为了可执行) run it : ./xxx.a or ./xxx EScC export zzm="zengzeming" export ndkClang="/zengzeming/ndk/android-ndk-r21-beta2/toolchains/llvm/prebuilt/linux-x86_64/bin/armv7a-linux-androideabi21-clang" export ndkLink="--sysroot=/zengzeming/ndk/android-ndk

Linux下快速构建Android编译环境

杀马特。学长 韩版系。学妹 提交于 2019-12-12 23:38:11
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 背景: 在移动互联网时代,大多数的企业内部都有移动客户端,而移动客户端又因为OS的不同产生了两个派系,即 安卓(Android) 和 苹果(IOS) ,而对于互联网技术从业者来说,这两者最直接的区别就是 开源 和 闭源 ,因而也导致了在构建移动客户端时,为了整体的稳定性和可靠性的考虑(甚至有成本的考虑),需要进行分别编译,本篇文章记录下如何在Linux环境下构建 Android 编译环境. <!--more--> 介绍 通常,开发 苹果 系列的软件均需要使用一些专有开发工具,比如 xcode ,而此工具必须运行在 Mac OS X 设备上(当然你也可以尝试各种黑苹果的方式),所以不论是对于个人开发者还是企业构建服务器来说,都需要购买更多的 Mac 设备,通常,我知道的企业内部会使用 Mac Mini 来作为苹果系列的构建环境。 而作为 安卓(Android) 系列的软件,由于本身是谷歌开源的移动端操作系统,因此对于底层开发环境和构建环境没有太高的要求。一般而言,开发者会使用 Android Studio 来开发安卓系列的软件,而内置的命令行工具 command-line 则默认提供了安卓软件的编译工具和环境。值得一提的是,由于 Android Studio 是开源的,因此该工具也提供了多个平台的支持

查看libunity.so崩溃信息

左心房为你撑大大i 提交于 2019-12-10 14:51:03
函数调用栈,利用NDK 的 arm-linux-andr oideabi-addr2line.exe 提供的命令行来手动查看 libunity.sym.so 的信息 bulgy 的so自动处理 的so是不带符号信息的,因此就算上传了so也是无法查看函数调用栈信息的,因此需要借助NDK查看 android-ndk-r10e\android-ndk-r10e \toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin> arm-linux-androideabi-addr2line -f -e libunity.sym.so 002de41 002de41 为函数地址 来源: oschina 链接: https://my.oschina.net/u/1391394/blog/3045856

LLVM 与 Clang 及其关系

拥有回忆 提交于 2019-12-05 22:53:55
随着 Android P 的逐步应用,越来越多的客户要求编译库时用 libc++ 来代替 libstdc++。libc++ 和 libstdc++ 这两个库有关系呢?它们两个都是 C++ 标准库,libc++ 是针对 Clang 编译器特别重写的 C++ 标准库,而 libstdc++ 则是 GCC 的对应 C++ 标准库了。从 Android 市场来说,Android NDK 已在具体应用中放弃了 GCC,全面转向 Clang,正如很早前 Android NDK 在 Changelog 中提到的那样: Everyone should be switching to Clang. GCC in the NDK is now deprecated. Android NDK 从 r11 开始建议大家切换到 Clang,并且把 GCC 标记为 deprecated,将 GCC 版本锁定在 GCC 4.9 不再更新; Android NDK 从 r13 起,默认使用 Clang 进行编译,但是暂时也没有把 GCC 删掉,Google 会一直等到 libc++ 足够稳定后再删掉 GCC; Android NDK 在 r17 中宣称不再支持 GCC 并在后续的 r18 中删掉 GCC,具体可见 NDK 的 版本历史 。 接下来,简要的介绍一下 Clang。Clang 是一个 C、C++

build opencv 3.4.x with NDK 20

不想你离开。 提交于 2019-11-28 22:31:15
$ git clone https://github.com/opencv/opencv.git $ cd opencv $ mkdir build-android && cd build-android $ cmake -DCMAKE_TOOLCHAIN_FILE=/home/lqian/Android/Sdk/ndk/20.0.5594570/build/cmake/android.toolchain.cmake -DANDROID_NDK=/home/lqian/Android/Sdk/ndk/20.0.5594570/ ../ -DANDROID_NATIVE_API_LEVEL=19 -DANDROID_ABI=armeabi-v7a $ make -j4 $ $ ls lib/armeabi-v7a/ -l total 54864 -rw-rw-r--. 1 lqian lqian 28169394 Aug 29 05:01 libopencv_core.a -rw-rw-r--. 1 lqian lqian 2778042 Aug 29 05:02 libopencv_imgcodecs.a -rw-rw-r--. 1 lqian lqian 25225452 Aug 29 05:02 libopencv_imgproc.a #此处的CMAKE_TOOLCHAIN