Android6.0权限学习
作者: Sam (甄峰) sam_code@hotmail.com 很久没有做Android App了。最近在搞Camera程序时,突然发现Android6.0后, 权限思路使用有了较大不同。现记录,学习,摘抄如下: 1. Android 6(API23)的动态权限: Android 6.0+ 版本, 不再像之前版本那样在安装阶段询问用户是否同意APP所要求的一大堆权限。...
View ArticleWindows环境下OpenCV开发环境搭建(VS2012+OpenCV2.4.9)
作者: Sam (甄峰) sam_code@hotmail.com 1. 下载OpenCV For Windows Pack: https://opencv.org/releases.html 因为在嵌入式平台上使用了OpenCV2.4.9. 所以在Windows平台也选择对应版本。 2. 安装: OpenCV2.4.9 安装包其实是个压缩包: Sam把它放到:...
View ArticleAndroidCamera程序研究
作者: Sam (甄峰) sam_code@hotmail.com Sam在Android平台下获取Camera数据,长期使用在NativeC层,利用V4L2接口获取Camera数据。或利用交叉编译OpenCV,并强行修改其底层, 使之使用V4L2接口而获得Camera数据。 在Android...
View ArticleOpenCV4Android编译详解
作者: Sam(甄峰) sam_code@hotmail.com 0. 背景简介: 之前为Android平台分别编译过OpenCV2.0, OpenCV2.4.20 OpenCV3.0等版本。并记录下来: http://blog.sina.com.cn/s/blog_602f87700102wwvb.html...
View ArticleNDK下各编译器对C++特性的支持
作者: Sam (甄峰) sam_code@hotmail.com Sam对C++并不擅长,但在使用NDK编译众多第三方库时,会遇到一些C++ 特性支持问题。通常的做法都是在编译选项中增加-std=c++11或者-std=c++0x. 但还是有一些特性无法通过编译。现分析如下。 0. 背景介绍: NDK在R10之后,就推荐使用clang, 而非GCC....
View ArticleValgrind在Android平台的使用
作者: sam(甄峰) sam_code@hotmail.com 几年前,Sam听同事说使用内存使用分析软件。但没有真正使用过。这次又有同事推荐Valgrind. 所以学习之。
View ArticleAndroidJNI记录
作者: Sam (甄峰) sam_code@hotmail.com 很早之前,在Android 下使用OpenGL时,用到了JNI。当前看到同事使用JNI,生成方式不同。所以记录之。 1. 静态注册+NDK编译: 在NDK Sample中,有gles3jni , hello-gl2, hello-jni等例子程序。他们分别是:OpenGLES3.0,...
View ArticleOpenCV底层对Camera的操作
作者: Sam (甄峰) sam_code@hotmail.com OpenCV提供接口,可以对Camera进行操作。 0. OpenCV对Camera的操作所属目录文件: OpenCV对Camera的操作,有多种方式。从VideoCapture class开始。 在modules/videoio/include/opencv2/videoio.hpp中,声明了一个class: class...
View ArticleTensorflowNDK编译
作者: Sam (甄峰) sam_code@hotmail.com 0. TensorFlow简介: TensorFlow™ 是一个开放源代码软件库,用于进行高性能数值计算。借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU、GPU、TPU)和设备(桌面设备、服务器集群、移动设备、边缘设备等)。TensorFlow™ 最初是由 Google Brain 团队(隶属于 Google...
View ArticleLinux平台使用FFMPEG获取USBCamera数据
作者: Sam (甄峰) sam_code@hotmail.com 最近有同事在Windows上使用ffmpeg获取Camera数据。提到ffmpeg获取Camera信息和数据方便易用,提供更多信心。 比OpenCV好用多了。 于是在Linux平台也试用之。
View ArticleLinux下IO多路复用Linux下的IO模型
作者: Sam (甄峰) sam_code@hotmail.com 0. Linux下的IO模型: I/O操作, I/O操作通常包括两个阶段: A. 等待数据准备好。 B. 和内核交换数据。(读写) 对socket上的输入操作来说, A步骤就是等待数据从网络中到达,此时,数据被存放在内核缓冲区。 B操作则是利用系统调用read, 把数据从内核缓冲区读取到应用程序层。 0.1:...
View ArticleLinux下IO多路复用select,poll,epoll
作者: Sam (甄峰) sam_code@hotmail.com 1. I/O多路复用: IO多路复用使得程序可以同时监听多个文件描述符(socket也是一种文件描述符),这对提高程序性能至关重要。 通常,网络程序在下列情况下需要使用I/O复用技术: A. 客户端程序要同时处理多个socket. B. 客户端程序要同时处理用户输入和网络连接。 C....
View ArticleLinux下IO多路复用epoll的使用初探
作者: Sam (甄峰) sam_code@hotmail.com 1. 基础介绍: epoll 是2.6.8 kernel 加入的IO复用模型,它从三个方面改进了select和poll模型。现在我们先尝试使用之。 epoll在实现和使用上与select, poll有很大差异。 A. epoll使用一组而不是一个函数来实现模型。 B....
View ArticleLinux线程间同步
作者: Sam (甄峰) sam_code@hotmail.com Linux下线程间同步,之前只用到mutex. 这次把互斥锁(mutex),条件变量(cond)和读写锁(rwlock)都记录下来。 1. 互斥锁(mutex): 互斥锁的基本想法是: 某个Thread 把mutex锁住后,其它Thread(或本Thread) 再调用lock时,会被告知已经锁住。直到mutex被unlock....
View ArticleLinuxSignal详解
作者: Sam (甄峰) sam_code@hotmail.com 0. 信号背景: 信号是由用户,系统或者进程发送给目标进程的信息。以通知目标进程某个状态的改变或系统异常。 注1: 线程组: 每个进程都会属于一个进程组(Process Group), 一个进程组可以包含多个进程。 进程组会有一个领导进程(Process group Leader)....
View ArticleLinux平台assert()使用详解
作者: Sam (甄峰) sam_code@hotmail.com 0. 基础知识: assert()用来检查不可能发生的行为, 以确保开发者在调试阶段尽早发现不可能发生的事件是否真的发生了。 若真的发生了,则表明这里逻辑有问题。 assert()最好的地方是,它只在debug模式下其效果,在Release模式下无效。保证了程序效率。 assert() 协助开发者发现程序bug....
View Articlelibevent使用记录一
作者: Sam (甄峰) sam_code@hotmail.com 之前使用epoll+threadpool来做高并发Server, 后决定使用libevent来做替换。现记录如下: 0. 背景知识: libevent是用于编写高速可移植非阻塞IO应用的库。它对select,poll,epoll等接口进行封装。通过设置回调函数的方式,监听文件描述符和socket,...
View Articlelibevent使用记录二epoll概念对应
作者: Sam (甄峰) sam_code@hotmail.com libevent Linux版本是对Epoll进行封装, 以实现IO多路复用。所以,在使用libevent时,常会感觉遇到epoll的对应概念。现尝试研究匹配之。 1. listen socket的设置:(ET模式和NOBLOCK模式) 在使用Epoll方式时, 在listen Socket 被创建后,...
View ArticleAndroid平台深度学习---信息摘抄
作者: Sam (甄峰) sam_code@hotmail.com 1. Android 8.1 (API-27) NNAPI: 人工智能神经网络API(如:TensorFlow) 神经网络 API 能够向设备内置机器学习框架,如 TensorFlow Lite —— Google 移动跨平台机器学习框架、Caffe2 等,提供加速运算和推理。TensorFlow Lite...
View Article