资源简介

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\objects.mk

     文件       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个文件信息

评论

共有 条评论