資源簡(jiǎn)介
STM32人臉識(shí)別代碼,正點(diǎn)原子探索者板使用。

代碼片段和文件信息
#include?“atk_frec.h“?
#include?“malloc.h“
#include?“ff.h“
#include?“stdio.h“
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//本程序只供學(xué)習(xí)使用,未經(jīng)作者許可,不得用于其它任何用途
//本人臉識(shí)別程序由ALIENTEK提供我們提供1個(gè)LIB(即:ATKFREC.lib)供大家使用?
//功能:利用攝像頭實(shí)現(xiàn)人臉識(shí)別.
//說(shuō)明:本識(shí)別庫(kù)需要用到內(nèi)存管理內(nèi)存總占用數(shù)在560KB左右(20個(gè)人臉).每增加一張人臉內(nèi)存占增加10KB左右.
//限制:由于本識(shí)別庫(kù)以M3/M4為目標(biāo)處理器內(nèi)存有限算法上進(jìn)行了大量閹割所以很多功能不太完善效果也不是
//?????很好.且沒(méi)有做識(shí)別有效檢查(輸入錯(cuò)誤的人臉也會(huì)有結(jié)果輸出).所以次代碼僅供大家參考用.
//
//其他需求:
//1攝像頭模塊一個(gè).
//2SD卡一張
//
//使用方法: ???
//第一步:調(diào)用atk_frec_initialization函數(shù)初始化人臉識(shí)別庫(kù)
//第二步:調(diào)用atk_frec_add_a_face函數(shù)添加人臉模板(如果已經(jīng)有了可以忽略次步)
//第三步:調(diào)用atk_frec_load_data_model函數(shù)加載所有模板到內(nèi)存里面(僅在添加新模板后需要如沒(méi)有添加新模板則可忽略此步)
//第四步:調(diào)用atk_frec_recognition_face函數(shù)獲取識(shí)別結(jié)果.
//第五步:調(diào)用atk_frec_delete_data函數(shù)可以刪除一個(gè)人臉模板
//第六步:如果不想再用識(shí)別庫(kù)則調(diào)用atk_frec_destroy函數(shù)釋放所有內(nèi)存結(jié)束人臉識(shí)別.
//
//版本:V1.0
//正點(diǎn)原子@ALIENTEK
//Copyright(C)?廣州市星翼電子科技有限公司?2009-2019
//All?rights?reserved ???? ??
//版權(quán)所有,盜版必究。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//內(nèi)存設(shè)置函數(shù)
void?atk_frec_memset(char?*pchar?cunsigned?long?len)?
{
mymemset((u8*)p(u8)c(u32)len);
} ? ??
//內(nèi)存申請(qǐng)函數(shù)
void?*atk_frec_malloc(unsigned?int?size)?
{
return?mymalloc(SRAMEXsize);
}
//內(nèi)存釋放函數(shù)
void?atk_frec_free(void?*ptr)?
{
myfree(SRAMEXptr);
}
//保存人臉識(shí)別所需的數(shù)據(jù)
//index:要保存的數(shù)據(jù)位置(一張臉占一個(gè)位置)范圍:0~MAX_LEBEL_NUM-1
//buf:要保存的數(shù)據(jù)緩存區(qū)首地址
//size:要保存的數(shù)據(jù)大小
//返回值:0正常
//????其他錯(cuò)誤代碼
u8?atk_frec_save_data(u8?indexu8*?bufu32?size)
{
u8*?path;
FIL?*fp;?
u32?fw;
u8?res;
path=atk_frec_malloc(30); //申請(qǐng)內(nèi)存
fp=atk_frec_malloc(sizeof(FIL)); //申請(qǐng)內(nèi)存
if(!fp)
{
atk_frec_free(path);
return?ATK_FREC_MEMORY_ERR;
}
sprintf((char*)pathATK_FREC_DATA_PNAMEindex);
f_mkdir(ATK_FREC_DATA_PDIR); //創(chuàng)建文件夾
res=f_open(fp(char*)pathFA_WRITE|FA_CREATE_NEW);
if(res==FR_OK)
{
res=f_write(fpbufsize&fw); //寫(xiě)入文件
}
f_close(fp);
if(res)res=ATK_FREC_READ_WRITE_ERR;
atk_frec_free(path);
atk_frec_free(fp);
return?res;
}
//讀取人臉識(shí)別所需的數(shù)據(jù)
//index:要讀取的數(shù)據(jù)位置(一張臉占一個(gè)位置)范圍:0~MAX_LEBEL_NUM-1
//buf:要讀取的數(shù)據(jù)緩存區(qū)首地址
//size:要讀取的數(shù)據(jù)大小(size=0則表示不需要讀數(shù)據(jù)出來(lái))
//返回值:0正常
//????其他錯(cuò)誤代碼
u8?atk_frec_read_data(u8?indexu8*?bufu32?size)
{
u8*?path;
FIL?*fp;?
u32?fr;
u8?res;
path=atk_frec_malloc(30); //申請(qǐng)內(nèi)存
fp=atk_frec_malloc(sizeof(FIL)); //申請(qǐng)內(nèi)存
if(!fp)
{
atk_frec_free(path);
return?ATK_FREC_MEMORY_ERR;
}
sprintf((char*)pathATK_FREC_DATA_PNAMEindex);?
res=f_open(fp(char*)pathFA_READ);
if(res==FR_OK&&size)
{
res=f_read(fpbufsize&fr); //讀取文件
if(fr==size)res=0;
else?res=ATK_FREC_READ_WRITE_ERR;
}?
f_close(fp);
if(res)res=ATK_FREC_READ_WRITE_ERR;
atk_frec_free(path);
atk_frec_free(fp);
return?res;
}?
//刪除一個(gè)人臉數(shù)據(jù)
//index:要保存的數(shù)據(jù)位置(一張臉占一個(gè)位置)范圍:0~MAX_LEBEL_NUM-1??
//返回值:0正常
//????其他錯(cuò)誤代碼
u8?atk_frec_delete_data(u8?index)
{
u8*?path;??
u8?res;
path=atk_frec_malloc(
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????目錄???????????0??2018-10-17?15:43??人臉識(shí)別代碼\
?????目錄???????????0??2015-10-02?16:19??人臉識(shí)別代碼\ATKFREC\
?????文件??????118374??2015-10-02?12:57??人臉識(shí)別代碼\ATKFREC\ATKFREC.lib
?????文件????????3792??2015-10-02?16:08??人臉識(shí)別代碼\ATKFREC\atk_frec.c
?????文件????????4653??2015-10-02?16:08??人臉識(shí)別代碼\ATKFREC\atk_frec.h
?????文件????????1405??2015-10-02?16:08??人臉識(shí)別代碼\ATKFREC\readme.txt
?????目錄???????????0??2015-10-02?16:19??人臉識(shí)別代碼\FATFS\
?????目錄???????????0??2015-10-02?16:19??人臉識(shí)別代碼\FATFS\doc\
?????文件????????3248??2014-01-15?00:31??人臉識(shí)別代碼\FATFS\doc\css_e.css
?????文件????????3661??2014-01-15?00:31??人臉識(shí)別代碼\FATFS\doc\css_j.css
?????目錄???????????0??2018-10-17?15:43??人臉識(shí)別代碼\FATFS\doc\en\
?????目錄???????????0??2015-10-02?16:19??人臉識(shí)別代碼\FATFS\doc\img\
?????文件????????1063??2013-09-18?21:47??人臉識(shí)別代碼\FATFS\doc\img\app1.c
?????文件????????1597??2013-10-18?21:41??人臉識(shí)別代碼\FATFS\doc\img\app2.c
?????文件????????3811??2014-01-13?20:56??人臉識(shí)別代碼\FATFS\doc\img\app3.c
?????文件???????10365??2014-01-07?15:10??人臉識(shí)別代碼\FATFS\doc\img\app4.c
?????文件????????1414??2011-09-02?22:10??人臉識(shí)別代碼\FATFS\doc\img\f1.png
?????文件????????1458??2007-02-10?03:12??人臉識(shí)別代碼\FATFS\doc\img\f2.png
?????文件????????1039??2007-02-10?03:12??人臉識(shí)別代碼\FATFS\doc\img\f3.png
?????文件????????2335??2008-01-05?20:27??人臉識(shí)別代碼\FATFS\doc\img\f4.png
?????文件????????2479??2008-01-05?20:27??人臉識(shí)別代碼\FATFS\doc\img\f5.png
?????文件????????1436??2010-08-21?10:13??人臉識(shí)別代碼\FATFS\doc\img\f6.png
?????文件???????11388??2013-05-12?12:31??人臉識(shí)別代碼\FATFS\doc\img\f7.png
?????文件???????11421??2014-02-19?22:38??人臉識(shí)別代碼\FATFS\doc\img\funcs.png
?????文件????????2401??2009-03-20?21:57??人臉識(shí)別代碼\FATFS\doc\img\la
?????文件????????2379??2009-06-13?21:48??人臉識(shí)別代碼\FATFS\doc\img\la
?????文件????????7932??2013-12-27?12:20??人臉識(shí)別代碼\FATFS\doc\img\modules.png
?????文件???????19068??2008-10-18?19:31??人臉識(shí)別代碼\FATFS\doc\img\rwtest.png
?????文件????????8153??2010-09-13?10:55??人臉識(shí)別代碼\FATFS\doc\img\rwtest2.png
?????文件????????3011??2009-06-15?00:03??人臉識(shí)別代碼\FATFS\doc\img\rwtest3.png
?????目錄???????????0??2018-10-17?15:43??人臉識(shí)別代碼\FATFS\doc\ja\
............此處省略198個(gè)文件信息
評(píng)論
共有 條評(píng)論