![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android打怪升级之路
学习Android开发就像玩游戏,路上有大怪小怪,小怪像Bug一样,靠经验和反映力,大怪就得靠夯实实力基础。
三川小哥 知乎
我是一名IT工程师,现从事CNN模型精简优化和移动端部署的工作。硕士毕业于华科,业余喜欢看书画画。
展开
-
高通骁龙snpe 编译配置运行
文章目录硬件准备安装1 安装python3.5+tensorflow安装miniconda更换conda源安装python3.5虚拟环境2 编译caffe准备修改编译选项编译运行3 配置snpe的环境运行1. 导出cld模型2 基准测试参考硬件准备笔记本电脑: 安装ubuntu16.04手机:搭载高通骁龙处理器usb线安装1 安装python3.5+tensorflow安装miniconda先下载 ubuntu64位 https://repo.anaconda.com/miniconda原创 2020-12-09 17:06:20 · 2399 阅读 · 1 评论 -
自动对焦算法对比
原创 2020-11-12 08:33:21 · 673 阅读 · 1 评论 -
FastJson 读取JSON文件到
本文介绍了如何读取一个json文本文件,并把数据保存到一个java对象中。基本使用从.json文件中读取:String srcPath = "saveNumpyAsJsonFile.json";JSONReader jsonReader = getJsonReader(srcPath);PatchTestData patchTestData = jsonReader.readObject(PatchTestData.class);private JSONReader getJsonReader原创 2020-10-14 13:34:13 · 5283 阅读 · 0 评论 -
【JNI】Java中如何管理native C++的指针
有这样一个需求Java中有两个函数:native void initJNI();native int getValue();第一个函数负责调用C++初始化一些变量,初始化一个做加法的类,第二个函数负责用这些变量来处理的到结果,那第二个函数进去以后怎么找到之前构建好的那个类呢?class Plus{ int plus(int a,int b){ return a+b }}解决方案这个类似于Java中的聚类关系,只要把C++中构建的类的引用传给Java就可以了原创 2020-09-14 18:27:53 · 869 阅读 · 0 评论 -
【JNI】辨析GettypeElement和GettypeRegion
辨析GetArrayElement和GetArrayRegion文章目录辨析GetArrayElement和GetArrayRegion1. 简介2. GetIntArrayRegion2 GetIntArrayElements1. 简介为了叙述方便,以int类型数组举例子:GetIntArrayRegion 表示 把Java的数组拷贝到 C++新建的数组内存区域中GetIntArrayElements表示把C++的一个数组指针指向 Java的数组,这样C++修改数组后,Java的变量是会发生改原创 2020-09-14 18:25:45 · 562 阅读 · 0 评论 -
【JNI】C++ 中的Android log使用格式化字符串输入
__android_log_print就像printf 一样,在格式化字符串中设置占位符 ``fmt中__android_log_print(ANDROID_LOG_ERROR,"SSSS","I'm %s \t ,age %d",name,age);常见参数 %c 一个字符(char) %d 有符号十进制整数(int) %e 浮点数、e-记数法 %f 单精度浮点数(默认float)、十进制记数法(%.nf 这里n表示精确到小数位后n位.十进制计数) %i原创 2020-09-14 18:23:21 · 1174 阅读 · 0 评论 -
Android grandle 常见配置片段代码
文章目录1 assets文档被压缩了,怎么办?2 NDK只想编译某一种CPU架构3 手动添加了一个AAR库怎么导入4 常见的依赖导入导入constraintlayout导入navigation导入CameraX依赖导入Glide导入ButterKnife导入Tensorflow lite 和support库1 assets文档被压缩了,怎么办?在Build.grandle(app)中,设置不想被压缩的文档的格式尾缀:android { aaptOptions{ noCompre原创 2020-09-14 18:06:47 · 193 阅读 · 0 评论 -
Android JNI开发常用库汇总,再也不用自己编译啦
Android JNI开发中常用库汇总此hub是我在开发android jni 过程中编译或者收集到的一些常用库,android 应用环境比较固定,所以一次编译好,大家就都可以用。(持续更新~ ~)使用过程遇到问题,欢迎讨论。所有文件在Github下载文章目录Android JNI开发中常用库汇总1 OpenCV动态库2. tensorflow-lite动态库3. caffe动态库3.5 caffe的aar库4. pytorch动态库5. boost静态库6. 未完待续 。。。1 OpenCV动态原创 2020-08-26 21:37:35 · 532 阅读 · 0 评论 -
Caffe的 Android aar库使用(脚手架)
文章目录0 试玩一下andorid demo caffe_android.aar库1 添加本地AAR2 Java代码示例(1) 申请权限(2)设置运行主函数(3)异步运行的监听器类(3) 启动神经网络识别任务caffe的android库编译比较费麻烦,网上的教程也不好继承。思来想去,觉得封装成java的aar库或者jar库,直接导入到项目中,岂不利索0 试玩一下andorid demo caffe_android.aar库如果你想直接运行下效果,我在github上有一个android demogit原创 2020-08-21 23:25:45 · 368 阅读 · 0 评论 -
Android 程序打开相册读取一张图片
开启相册,回调一张图片开始还要设置读写权限打开相册Intent intent=new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);startActivityForResult(intent,200);设置返回值 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data原创 2020-08-21 22:46:26 · 1060 阅读 · 0 评论 -
在安卓上玩转Tensorflow Lite :数据输入
文章目录1. 输入图片数据(1)导入依赖(2)读取一个TensorImage(3)把输入图片转换成模型要求的格式和大小(4)把TensorImage转换成 ByteBuffer输入给 tensorflow lite解释器Tensorflow lite不具备模型的训练功能,只能运行训练好的模型,所以他的核心就是一个模型的解释器(Interpreter)。要用神经网络模型识别检测一个东西,需要四个要素:需要一个神经网络模型(怎么导出tensorflow lite格式的模型?)需要把这个神经网络模型运行原创 2020-08-19 00:17:20 · 1687 阅读 · 4 评论 -
Tensorflow lite 编译Android JNI C++ 动态链接库(步骤详细生动,还怕搞不定吗)
目录1. 准备食材(荤菜)2. 准备食材(素菜)3. 磨刀(tensorflow编译依赖)4. 切菜5 热油(设置输出的内容)6. 炒菜了(编译)7 浇汤头,也叫勾芡(整理头文件)8. 上菜啦(整理进CMakeLists.txt中)9. 吃完了,别走,付钱呀如果你想在Android上用JNI跑TensorFlow神经网络,就需要把TensorFlow Lite编译成C++的动态链接库。由于烹饪技法奇特,凡人非三五天难以编译出来。本大厨历经艰辛,达到彼岸。今天把烹饪过程详述于此,以示后来者。(有问题留言共原创 2020-08-12 21:43:10 · 2263 阅读 · 16 评论 -
Android 把图片保存到相册
很多安卓功能都需要吧图片保存在相册中,保存二维码,下载图片,拍照录像。这里面有一个很膈应的函数,记不住,就写下来。用的时候抄一抄。这个例子实现了读取一张图片,保存到外部存储中,然后调用相册扫描到这个路径。Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.p1);//1. 找一个可用的文件位置File[] mediaDir = getExternalMediaDirs();File output_direct原创 2020-08-02 21:25:25 · 842 阅读 · 0 评论 -
安卓JNI编程知识点,Java与C++交互
1 Java中声明(1) native方法是被编译成一个共享库,需要先加载这个库告诉java编译器static {System.loadLibrary("hello-jni");// 共享库的名字libhello-jni.so}(2) native 方法告诉java虚拟机该方法是用别的语言实现的public native String stringFromJNI();2 C++层实现#include <string.h>#include <jni.h>jstr原创 2020-07-25 19:28:11 · 215 阅读 · 0 评论 -
[Android] 快速制作瀑布流的强大控件--RecyclerView
文章目录1. 在布局中添加2. 在使用的地方创建和绑定3 设计一个Adapter4 RecyclerView 瀑布流布局方式RecyclerView就是实现列表的空间,例如我们的微信通信录,还有朋友圈的一条条新闻,都是通过RecycleView实现的,可见其重要性。它的基本使用步骤:1. 在布局中添加在布局文件中插入RecycleView。<androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_view原创 2020-07-25 19:05:04 · 515 阅读 · 0 评论 -
【UI】安卓Fragment基本用法
文章目录1. 基本思路2 代码1. 基本思路Fragment是一个控件,所以必须要放在Activity中,但要实现切换,就必须要有一个容器来切换。所以,我们首先在Activity中,构建一个容纳这些Fragment的容器,即FragmentLayout。这个容器就像一个相框,Fragment就是我们在里面摆放不同的照片。这还不够,还得需要一个管理员去手动替换维护这个相框。所以我们还需要新建一个Fragment的管理器FragmentManger,然后我们通过这个管理员去实现Fragment的添加、替原创 2020-07-25 12:52:35 · 157 阅读 · 0 评论