深度学习自学(十):人脸检测android端-JNI调试调用底层检测识别库
一、CmakeLists
1、原始CmakeLists
#----------------指定 库文件名字(.so)和c++文件路径(可多个)
add_library( # Sets the name of the library.hello-lib# Sets the library as a shared library.SHARED# Provides a relative path to your source file(s).src/main/cpp/hello-lib.cpp})# Searches for a specified prebuilt library and stores the path as a
# variable. Because CMake includes system libraries in the search path by
# default, you only need to specify the name of the public NDK library
# you want to add. CMake verifies that the library exists before
# completing its build.
#--------------依赖NDK中的库
find_library( # Sets the name of the path variable.log-lib# Specifies the name of the NDK library that# you want CMake to locate.log )# Specifies libraries CMake should link to your target library. You
# can link multiple libraries, such as libraries you define in this
# build script, prebuilt third-party libraries, or system libraries.
#--------------关联log库到本地库。如果你本地的库(native-lib)想要调用log库的方法,
#那么就需要配置这个属性
target_link_libraries( # Specifies the target library.hello-lib# Links the target library to the log library# included in the NDK.${log-lib} )
2、填写工程模板
#----------------指定 库文件名字(.so)和c++文件路径(可多个)
add_library( hello-libSHAREDsrc/main/cpp/hello-lib.cpp})#--------------依赖NDK中的库
find_library( log-liblog )#--------------关联log库到本地库。如果你本地的库(native-lib)想要调用log库的方法,
#那么就需要配置这个属性
target_link_libraries(hello-lib${log-lib} )
3、配置库文件
add_library( # Sets the name of the library.hello-libSHAREDsrc/main/cpp/hello-lib.cppsrc/main/cpp/test.cpp)
4、添加源文件
aux_source_directory(src/main/cpp SRC_LIST)
add_library( hello-libSHARED${SRC_LIST}
5、cmake添加动态链接和静态链接库
动态库
link_directories(${PROJECT_SOURCE_DIR}/lib) #添加动态连接库的路径
target_link_libraries(project_name -lmxnet ) #添加libmxnet.so
静态库
add_library(mxnet STATIC IMPORTED)
set_property(TARGET mxnet PROPERTY IMPORTED_LOCATION /path/to/libmxnet.a)
target_link_libraries(project_name mxnet ) #添加libmxnet.a
二、JNI生成并调用.so动态库
1、实现步骤
1、编写 Java 代码。我们将从编写 Java 类开始,这些类执行三个任务:声明将要调用的本机方法;装入包含本机代码的共享库;然后调用该本机方法。
2、编译 Java 代码。在使用 Java 类之前,必须成功地将它们编译成字节码。
3、创建 C/C++ 头文件。C/C++ 头文件将声明想要调用的本机函数说明。
4、编写 C/C++ 代码。这一步实现 C 或 C++ 源代码文件中的函数。C/C++ 源文件必须包含步骤 3 中创建的头文件。
5、创建共享库文件。从步骤 4 中创建的 C 源代码文件来创建共享库文件。
6、运行 Java 程序。运行该代码,并查看它是否有用。
2、在Java中调用JNI
package com.wwj.jni;
import android.os.Bundle;
import android.widget.TextView;
import android.app.Activity;
public class TestJNIActivity extends Activity {
private TextView textView;
static { // 加载动态库System.loadLibrary("TestJNI");}@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.textview);TestJNI testJNI = new TestJNI(); // 调用native方法boolean init = testJNI.Init(); if (init == true) { // 调用Add函数int sum = testJNI.Add(100, 150);textView.setText("你真是个" + sum);} else {textView.setText("你比二百五还要二百五");}testJNI.Destory();}
}
深度学习自学(十):人脸检测android端-JNI调试调用底层检测识别库相关推荐
- 深度学习之视频人脸识别系列二:人脸检测与对齐
作者 | 东田应子 [磐创AI导读]本文是深度学习之视频人脸识别系列的第二篇文章,介绍人脸检测与对齐的相关算法.欢迎大家关注我们的公众号:磐创AI. 一.人脸检测与关键点检测 问题描述: 人脸检测解决 ...
- 深度学习崛起十年:“开挂”的OpenAI革新者
来源|The Robot Brains Podcast 编译|OneFlow社区 AlexNet,AlphaGo,GPT.CLIP.DALL-E和Codex,这些在AI界轰动一时的杰作,对于任何一个A ...
- 如何实践AI深度学习的十大惊艳案例
https://www.toutiao.com/i6641746367272190477/ 2019-01-02 12:08:01 你可能已经听说过深度学习并认为它是骇人的数据科学里的一个领域.怎么可 ...
- 【深度学习】DIY 人脸识别技术的探索(一)
[深度学习]DIY 人脸识别技术的探索(一) 文章目录 摘要 问题重述 模型假设 定义与符号说明 问题分析 模型的建立与求解 参考 摘要 伴随着人工智能技术的发展,人们对信息安全有了更高的要求,传统的 ...
- 深度学习未来十大趋势
深度学习未来十大趋势 [日期:2015-12-22] 来源: 作者:张巨岩 [字体:大 中 小] 本周,我在加拿大蒙特利尔参加了NIPS(Neural Information Processing S ...
- 花书+吴恩达深度学习(十)卷积神经网络 CNN 之卷积层
目录 0. 前言 1. 2D 图像卷积 2. 3D 图像卷积 3. 过滤器(核函数) 4. 过滤器应用于边缘检测 5. padding 填充 6. stride 步长 7. 使用卷积的动机 8. 1乘 ...
- 深度学习三十年创新路
深度学习三十年创新路 编者注:深度学习火了,从任何意义上,大家谈论它的热衷程度,都超乎想象.但是,似乎很少有人提出不同的声音,说深度学习的火热,有可能是过度的繁荣,乃至不理性的盲从.而这次,有不同的想 ...
- 知识图谱论文阅读(八)【转】推荐系统遇上深度学习(二十六)--知识图谱与推荐系统结合之DKN模型原理及实现
学习的博客: 推荐系统遇上深度学习(二十六)–知识图谱与推荐系统结合之DKN模型原理及实现 知识图谱特征学习的模型分类汇总 知识图谱嵌入(KGE):方法和应用的综述 论文: Knowledge Gra ...
- 深度学习下的人脸识别技术:从“后真相”到“无隐私”
2019-06-17 14:27:08 图片来源@视觉中国 文|五矩研究社,作者|劫镖 2018年7月,<大西洋月刊>曾发表过一篇人脸识别的文章,名字叫做<开启假视频时代>,文 ...
最新文章
- 微信小程序云开发图片上传完整代码附效果图
- lua学习笔记之日期时间
- mysql查看数据库命令
- CSDN移动助手v0.01发布
- 分享十佳Web开发资源
- Python常用模块之configparser模块
- Redux异步中间件
- qt提升控件之后,编译报错
- win7_fedora 双系统安装方法
- pysnmp snmpwalk
- python 实现复制文件夹以及文件夹下的子文件
- xp系统下载U盘安装教程,u盘安装xp系统方法
- 关于checkbox的removeClass属性
- 次世代建模师电脑里面收藏的素材共享
- IBM WebSphere 9.0.5 笔记大全
- AD破解后在同一局域网内许可证冲突
- 面向对象的C++了解
- Linux上安装编译lzo报错:Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run 已解决
- 2020年的放置游戏会是好的投入方向吗?
- Docker for Windows
热门文章
- php连接Access实例
- jsf UIComponent组件接口详细注释说明(jsf1.1规范)
- Linux杀100个进程,在linux bash中杀死一个进程子树
- WinCE下直接启动自己应用程序的方法
- size()和 strlen区别
- cmake使用教(二) install的使用
- postman导出请求url_postman接口测试之复制多个接口或collections到某个子文件夹或collections下...
- cas云计算机管理平台添加加密锁,CAS云计算管理平台安装手册.docx
- mysql /!/_Mysql(一)
- python 并查集_python 实现并查集源代码 | 学步园