资源简介
1.去掉了所有动态分配内存的操作,对嵌入式系统有一定的速度提升
2.注释覆盖了大量关键代码
3.减少了代码一半的体积,并且减少了部分健壮性的代码,速度比OpenCV源码提升16%
4.修改了大量数据结构,不依赖CV源码直接编译
5.去掉了double型,改成Int
6.开方改成查表
7.除法改成乘法加位移
8.速度是EMCV的6倍
代码片段和文件信息
#include “Haar.h“
#include “loadCascade.h“
#include “Util.h“
#include “stdio.h“
#include “string.h“
#include
#include
#include
/*******************Global************************************/
HaarClassifierCascade *cascade ;
//HidHaarClassifierCascade hid_cascade;
//32bits cell Mat
int MatPool32[MaxMatNum][MAXROWS][MAXCOLS];
//8bits cell
unsigned char MatPool8[MaxMatNum][MAXROWS][MAXCOLS];
//8bits*3 cell
unsigned char ImgRGBPool8[MaxMatNum][RGBCHANNEL][MAXROWS][MAXCOLS];
//64bits cell
_int64 MatPool64[MaxMatNum][MAXROWS][MAXCOLS];
//候选区域坐标节点并查集
PTreeNode PTreeNodes[MAXPTREENODES];
char HidCascade[MAXHIDCASCADE];
//分类器检测结果区域序列
Sequence result_seq;
//==================================================================
//函数名: IsEqual
//作者: qiurenbo
//日期: 2014-10-1
//功能: 判断两个矩形是否邻接
//输入参数:_r1 _r2 候选区域矩形
//返回值: 返回相似性(是否是邻接的矩形)
//修改记录:
//==================================================================
int IsEqual( const void* _r1 const void* _r2)
{
const Rect* r1 = (const Rect*)_r1;
const Rect* r2 = (const Rect*)_r2;
int distance5x = r1->width ;//int distance = cvRound(r1->width*0.2);
return r2->x*5 <= r1->x*5 + distance5x &&
r2->x*5 >= r1->x*5 - distance5x &&
r2->y*5 <= r1->y*5 + distance5x &&
r2->y*5 >= r1->y*5 - distance5x &&
r2->width*5 <= r1->width * 6 &&
r2->width * 6 >= r1->width*5;
}
//==================================================================
//函数名: ReadFaceCascade
//作者: qiurenbo
//日期: 2014-10-1
//功能: 根据候选区域的相似性(IsEqual函数)建立并查集
//输入参数:seq 候选目标区域序列
//返回值: 返回分类后的类别数
//修改记录:
//==================================================================
int SeqPartition( const Sequence* seq )
{
Sequence* result = 0;
//CvMemStorage* temp_storage = 0;
int class_idx = 0;
memset(PTreeNodes 0 MAXPTREENODES*sizeof(PTreeNode));
int i j;
//建立以seq中元素为根节点的森林
for( i = 0; i < seq->total; i++ )
PTreeNodes[i].element = (char*)&seq->rectQueue[i];
//遍历所有根节点
for( i = 0; i < seq->total; i++ )
{
PTreeNode* node = &PTreeNodes[i];
PTreeNode* root = node;
//确保node中元素指针不为空
if( !node->element )
continue;
//找到元素在树中的根结点
while( root->parent )
root = root->parent;
for( j = 0; j < seq->total; j++ )
{
PTreeNode* node2 = &PTreeNodes[j];
//确保1.node中元素指针不为空
// 2.且不是同一个node结点
// 3.且是相似区域
// 若是相似区域,则合并元素
if( node2->element && node2 != node &&
IsEqual( node->element node2->element))
{
PTreeNode* root2 = node2;
//找到元素在树中的根结点
while( root2->parent )
root2 = root2->parent;
//合并的前提是不在一颗树中
if( root2 != root )
{
//秩小的树归入秩大的树中
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 134 2014-10-10 21:04 FaceDection\cc_build_Debug.log
文件 2792 2014-10-06 10:39 FaceDection\cc_build_Release.log
文件 18431 2014-10-10 21:03 FaceDection\Debug\FaceDection.map
文件 483119 2014-10-10 21:03 FaceDection\Debug\FaceDection.out
文件 41467 2014-10-10 21:03 FaceDection\Debug\Haar.obj
文件 234117 2014-10-10 11:35 FaceDection\Debug\loadCascade.obj
文件 11929 2014-10-10 19:36 FaceDection\Debug\Main.obj
文件 75199 2014-10-10 11:35 FaceDection\Debug\Tables.obj
文件 10102 2014-10-10 11:35 FaceDection\Debug\Util.obj
文件 690 2014-10-10 21:03 FaceDection\Debug.lkf
文件 337 2014-10-05 19:36 FaceDection\FaceDection\.ccsproject
文件 19094 2014-10-05 19:36 FaceDection\FaceDection\.cproject
文件 4208 2014-10-05 19:36 FaceDection\FaceDection\.project
文件 62 2014-10-05 19:36 FaceDection\FaceDection\.settings\org.eclipse.cdt.codan.core.prefs
文件 123 2014-10-05 19:36 FaceDection\FaceDection\.settings\org.eclipse.cdt.debug.core.prefs
文件 208 2014-10-05 19:36 FaceDection\FaceDection\.settings\org.eclipse.core.resources.prefs
文件 373 2014-10-05 19:36 FaceDection\FaceDection\Debug\ccsObjs.opt
文件 279 2014-10-05 19:36 FaceDection\FaceDection\Debug\ccsSrcs.opt
文件 4386 2014-10-05 19:36 FaceDection\FaceDection\Debug\makefile
文件 257 2014-10-05 19:36 FaceDection\FaceDection\Debug\ob
文件 1828 2014-10-05 19:36 FaceDection\FaceDection\Debug\sources.mk
文件 4056 2014-10-05 19:36 FaceDection\FaceDection\Debug\subdir_rules.mk
文件 1818 2014-10-05 19:36 FaceDection\FaceDection\Debug\subdir_vars.mk
文件 3072 2014-10-10 21:04 FaceDection\FaceDection.CS_\FILE.CDX
文件 656 2014-10-10 21:04 FaceDection\FaceDection.CS_\FILE.DBF
文件 1001 2014-10-10 21:04 FaceDection\FaceDection.CS_\FILE.FPT
文件 26663 2014-10-10 21:05 FaceDection\FaceDection.CS_\SYMBOL.DBF
文件 47506 2014-10-10 21:05 FaceDection\FaceDection.CS_\SYMBOL.FPT
文件 7961 2014-10-10 21:04 FaceDection\FaceDection.paf2
文件 1631 2014-10-09 16:40 FaceDection\FaceDection.pjt
............此处省略484个文件信息
相关资源
- dsp2812试验手册
- 训练Haar人脸检测-
- 视频流实时人脸检测Filter
- DSP TMS320F283xx/F282xx CCS flash烧写插件
- 基于OpenCV读取摄像头的人脸检测和识
- 海康威视笔试题08、09、12、13年 dsp,
- C6000系列DSP的CSL库函数大全
- TI+TM320F28335数据手册中文版.pdf
- 基于Adaboost算法的实时行人检测系统
- 高级4层PCB设计-DSP (原理图,pcb和封
- 软件无线电GPS接收机的DSP实现与优化
- DSP技术及应用-吴冬梅张玉杰-PDF.rar
- 基于DSP的FSK和QPSK调制器的设计
- CCS5.5以上版本使用指南
- DSP在线升级详细指导81597
- spandsp-0.0.6pre21.tgz
- DSP实验报告DSP实验报告
- DSP28335TI例程
- ZV138A_V1.1原理图 天豹 DSP+FPGA xlinx sp3
- 胡航 语音信号处理
- 基于DSP的图像处理系统的设计
- 开发DSP6437一些资料 闻亭和瑞泰开发板
- ADSP-TS201 TigerSHARC 硬件开发手册
- dspack for delphi 2010
- ucos ii 在DSP28335上的移植
- TMS320F28335开发板原理图
- dsp28335数据手册 中文版
- CS-101568-DSP9 BC57E687B DataSheet
- DSP原理与应用_张卫宁_第8章.ppt
- opencv车辆检测model
评论
共有 条评论