Dlib学习人脸比对

1.Dlib库

本文主要是记录一下使用dlib的一些笔记(实现在嵌入式平台上实现人脸比对【简易登陆】,中间使用的库主要是opencv dlib,涉及嵌入式,还有需要对dlib库进行交叉编译)。中间参考了很多网络资料,本文是记录下整个学习使用过程中的细节。如果有什么错误大家可以提出。
另外备注:交叉编译过程使用过dlib-19.1,结果发现dnn功能还没有完善,于是重新改为dlib-19.7.交叉编译opencv和dlib均使用cmake(不在详细描述)。

dlib库是干什么的

  1. 官方说明
    dlib官方链接:点击这里
    dlib库其实挺庞大的,library下面有:
Algorithms
A

Read more

zigbee快速使用指南

zigbee型号说明

此处省略写,zigbee协议栈使用:
cc2530-2.5.1a。CC2530是2.4Ghz,芯片其它说明,略。

官方说明

  1. zigbee芯片型号 ,使用TI公司的CC2530芯片。
  2. 协议栈 ,CC2530-2.5.1a,该版本支持了OTA。
  3. 协议栈构成,略。
  4. 本说明纯属自己学习过程笔记,中间如果存在错误,希望大家可以指正。本说明主要是从代码层面快速运用zigbee模块(CC2530)。

zigbee开发

zstack结构

1.协调 路由 终端 听起来就不复杂,
协调--组建网络,发起
路由--中间转发等等呢
终端--最终的设备(可能这么叫不专业)
2.组建网络

Read more

linux上container_of宏使用

1.简介

  在Linux上container_of宏使用较为常见,该宏的作用是通过知道结构体中一个成员的地址,从而
计算出,整个结构体的地址,在linux上很多结构体中都包含有struct list_head结构体,通过该list,就可以
得到整个结构体的地址,从而进行操作。

2.解释

  在知道container_of之前,首先需要先知道一个offsetof(TYPE, MEMBER)

#define offsetof(TYPE, MEMBER)  ((size_t)&((TYPE *)0)->MEMBER)

上述结构是计算出MEMB

Read more

Linux上交叉编译opencv

1. 简介

主要介绍linux上交叉编译opencv2.4.9,运行目标平台PX3SE(类似RK3128) linux上程序安装目录结构

bin----指应用程序文件
lib----指库文件
usr/bin 是系统自带的应用
usr/local/bin 是自己安装的应用和自己写的全局脚本(安装opencv里面的一些应用在里面
usr/lib 系统自带的lib
usr/local/lib 是自己安装的libopencv的安装lib包都在里面

//编译opencv使用工作目录(以px3se为例说明)

C:/home/dong/linux_sdk/buildroot/output/host/

Read more

ALSA音频框架简述

1. ALSA概述

ALSA(Advanced Linux Sound Architecture,高级linux声音体系)简写,是linux上主流 音频体系架构,提供了音频和MIDI的支持。是Linux系统下一套标准的音频驱动框架。

2. ALSA框架

ALSA框架分层在内核空间部分和应用空间部分。

2.1 Linux内核空间的alsa驱动

在Linux2.6后已经集成进入linux源码。 备注:在内核层使用alsa驱动时,请保证内核编译时,支持上 CONFIG_SYSVIPC=y 如果没有支持上该选项,使用时,会出现错误

ALSA lib pcm_dmix.c:1038:(snd_pcm_d

Read more

QT5+Opencv2.4.9配置笔记

简述

距离上一次写博客笔记已经有很长一段时间了,看来没有坚持下来啊,这次写博客主要是记录一下QT5上调用Opencv2.4.9时的过程。
之前一直使用VS进行Opencv的编写,感觉还可以,不过最近用到了QT上调用Opencv,之前在坑里躺了一下,无奈所以写了一下笔记。
备注:这次使用的QT5为MSVC编译器的(微软的VC编译器),如果你使用了MinGW(MingGW是指是Minimalist GNU on Windows的缩写),这就要注意了要使用MinGW重新编译一下opencv,否则下面的笔记是不可以进行使用的哦,下面的笔记使用的是自带MSVC的QT(VS已经把opencv默认编译好了)

Read more

STM32上RTOS内存配置说明

1.说明

  在STM32上进行RTOS(以rt-thread为例)配置动态内存管理方式,我们需要设置一个动态内存管理的访问, 也就是管理区域的大小,起始地址等。

2.管理内存的范围

  在使用操作系统前,先看一下原始的分配情况:startup_stm32f103xe.s

; Amount of memory (in bytes) allocated for Stack
; Tailor this value to your application needs
; <h> Stack Configuration
;   <o> S

Read more

C语言关键字volatile

1.简介

  volatile关键字,作为一个指令关键字,确保本条指令不会因为编译器的优化而省略,且要求每次
直接读取值。该关键字可以保持内存可见性,但不是保证原子性(无法知道是否有其它线程在修改该地址的值)内存可见性,是保证每次都可以读取到最新值。
  另外一个是保证有序性(这个只是保证这个变量之前的代码一定比它先执行,但是并不保证这个变量之前的代码不可以重排序)。   一个定义为volatile的变量就是说这个变量可能会意想不到的改变,这样编译器就不会去随便假设
这个变量的值,精确说,编译器优在用到这个变量的值的时候,必须每次都小

Read more

Caffe深度学习框架安装(Ubuntu14.04+cuda8.0)

Caffe深度学习框架安装(Ubuntu14.04+cuda8.0)

简述

本文主要使用的系统为Ubuntu14.04,cuda使用较新的8.0,cudnn使用cudnn7.0,仅供小白安转入参考。

系统:Ubuntu14.04 cuda:cuda8.0 cudnn版本:cudnn7.0

准备

1、硬件检查

因为我们使用了cuda,是英伟达公司搞的,所以先要保证您的显卡是N卡,而不是A卡,A卡飘过哦!

查看(Linux下):

lspci  | grep -i vga

正常:01:00.0 VGA compatible controller: NVIDIA Corporation GM1

Read more

ORB-SLAM2(单目slam、ROS环境)安装总结

本文主要是记录自己安装ORB-SLAM2的总结,之前从未写过博客,没有想过分享一下自己的探索过程。 首先slam(simultaneous localization and mapping),即时定位与地图构建。我这头是在ubuntu14.04上安装,主要是测试一下在ros上运行(indogo版本)单目slam。

一、依赖项的安装

1.1 、Eigen3安装 官网:http://eigen.tuxfamily.org/index.php?title=Main_Page g2o库依赖于eigen3。Eigen是C++中可以用来调用并进行矩阵计算的一个库。

sudo apt

Read more