人脸识别算法嵌入式移植的一点经验
本文涉及的内容可能是大家在移植算法的时候会出现的错误,不涉及特定公司的内容,希望老板不要介意。如今临时遇到了这些问题。解决的方法也许不是最好的。
能给他人起到一点作用就算不错。
移植内容
1 windows上面的路径能够用“\”,也能够用“/”。
可是linux上面的路径仅仅能够用“\”。
所以应该全部路径都用“\”。
2 windows下使用寄存器指令集应包括“intrin.h”。对应的linux下的头文件是“x86intrin.h”。
3 对于实数的最大值和最小值,不能直接定应min和max。能够定义成bst_min。这样使用起来不会和linux底层函数冲突,在windows也能够任意使用。
4 结构体定义对齐例如以下
在LINUX平台上对齐方式是这种
#ifdef LINUX
typedef struct _SURFWeakClassifier SURFWeakClassifier
struct _SURFWeakClassifier
{ union
{
float Projection[32];
__m128 Projection_m128[8];
#ifndef VC_2005
__m256 Projection_m256[4];
#endif
}__attribute__((aligned(32)));
SURFBoxFeature Feature;
float Bias;
}__attribute__((aligned(32)));
在WINDOWS平台上是这种
typedef struct _SURFWeakClassifier
{ __declspec(align(32)) union
{
float Projection[32];
__m128 Projection_m128[8];
#ifndef VC_2005
__m256 Projection_m256[4];
#endif
};
SURFBoxFeature Feature;
float Bias;
} SURFWeakClassifier;
5 对齐方式申请内存
linux中
(SURFWeakClassifier*)_mm_malloc(sizeof(SURFWeakClassifier)*weakNum, 32);
windows 中
stageClassifier->WeakClassifiers = (SURFWeakClassifier*)_aligned_malloc(sizeof(SURFWeakClassifier)*weakNum, 32);
6 释放内存
linux中
_mm_free(stageClassifier->WeakClassifiers);
WINDOWS中
_aligned_free(stageClassifier->WeakClassifiers);
7 __m128 取值
WINDOWS下
res0.m128_f32[3];
LINUX下
float *q = (float*)&res0;
return q[3];
8 在linux中内联函数的參数必须是const的。
9 linux 读取视频
首先安装软件开发工作站版本号的linux。
然后再安装yasm库
然后安装方法ffmpeg.
安装x264.
10 实现windows宿主机与linux虚拟机的文件共享
在百度经验上搜索win7与虚拟机种linux共享文件的方法。或者查看本文件夹下保存的网页图片。
11 安装opencv
能够查看本文件夹保存的网页图片。
遇到asm编译的问题能够把宏定义部分凝视掉。f.have里面sse4.2之前所有设置成1。其它设置成0。
12 当使用CV_CALL之后会产生一个问题,跳过CvSIze size的初始化这类问题.
这类问题产生的原因是CV_CALL出发的go exit跳过了变量的定义.这在嵌入式平台上是非法的.一个比較方便的解决的方法是使用{},将变量到_END_之前括住,使变量成为局部变量.
相关文章
- 【华为云实战开发】11.如何快速开展嵌入式开发项目?
- springboot支持三种嵌入式servlet容器:tomcat(默认),jetty,undertow
- 嵌入式新闻早班车-第2期
- 《安富莱嵌入式周报》第210期:2021.04.26--2021.05.02
- 【STM32H7】第2章 嵌入式网络协议栈基础知识
- 嵌入式arm linux 下glibc 断言死机要怎么查?
- Atitit 嵌入式系统与pc系统的对比 目录 1. 哈佛结构和冯诺依曼结构 普林斯顿结构区1 2. 中断程序 类库调用1 3. 指令集 三大流程语句 与 运算语句 赋值语句1 4. 异
- 嵌入式linux开发,MIRACL移植,MIRACL库移植,密码学C语言函数库,SM2椭圆曲线公钥密码算法移植
- 嵌入式linux开发,tcpdump移植,tcpdump网络数据抓包工具移植
- 嵌入式linux开发,linux命令之rm
- 嵌入式linux开发,linux命令之tar
- 使用Visual Studio进行嵌入式系统开发
- ZYNQ - 嵌入式Linux开发 -03- 连接文件
- 嵌入式Linux开发,去掉内核kernel开机画面logo屏幕上的光标