人臉識別技術(shù)二次開發(fā)及接口函數(shù)_第1頁
人臉識別技術(shù)二次開發(fā)及接口函數(shù)_第2頁
人臉識別技術(shù)二次開發(fā)及接口函數(shù)_第3頁
人臉識別技術(shù)二次開發(fā)及接口函數(shù)_第4頁
人臉識別技術(shù)二次開發(fā)及接口函數(shù)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、人臉識別接口二次開發(fā)包及函數(shù) 說明書第一部分產(chǎn)品的性能評價,使用說明,問題等。第二部分SDK函數(shù)手冊。第一部分一. 產(chǎn)品的版權(quán)本品從底層開始即完全自主知識產(chǎn)權(quán)開發(fā),未用任何第三方圖像庫及GDI函數(shù)庫。更未引用其它公司的人臉識別SDK來進(jìn)行加工與封裝。本品是VC開發(fā),但只有極小部分用到了MFC大部分COD韻為標(biāo)準(zhǔn)C+S寫。二. 產(chǎn)品的版本SunLightFace.exe是網(wǎng)站發(fā)布的演示程序,用戶可以通過這個程序來測試SDK的性能。SunLightFace.dll是SDK,其性能技術(shù)指標(biāo)與演示程序是完全相同的。 目前這個版本全稱是:可見光主動識別版(非紅外攝像頭,配合識別) 另外還有兩個版本:可見

2、光被動識別版,紅外主動識別版。三. 產(chǎn)品的重要特點1. 人臉檢測的高正確率,誤檢,漏檢很少,支持多臉( max=32 )。 平面旋轉(zhuǎn)高達(dá)60度,并帶鼻,嘴定位,及眼鏡判斷等功能。2. 人臉識別的高精度,向用戶推薦的識別閥值不僅能適應(yīng)光線環(huán)境的變化,而且有高達(dá)97.18%以上的正確率。帶眼鏡或頭發(fā)擋住眉毛都行。(但黑粗邊眼鏡的識別率相對低些,即在較好的識別環(huán)境下,黑粗邊眼鏡仍是 0K的,除此之外的眼鏡,對識別率沒有任何影響)四. 如何使用范例代碼SunLightFace.dll是按WINDOWS API的標(biāo)準(zhǔn)調(diào)用來生成的動態(tài)庫,并提供了 VB,VC,C#三類范例代碼,精簡扼要,如果因VS版本問題

3、無法打開,可以用其它文件編輯器打開.CPP,.H,.CS, .frm,.bas文件來進(jìn)行分析。五. 如何采模板1. 因為是主動配合識別,最好是采5張模板(總量是10張),正面1張,側(cè)面2張,上仰下俯各1張,偏角不宜大(2-3度即可-> 微偏:因為你在主動配合識別時不會故意地去偏著頭識別,而是正對識別,但可能無心偏了一點,這里要求你“微偏”的目的就是為了和你將來可能的“無心偏了一點“對應(yīng)),并都眼看著畫面中的自己,因為眼球是定準(zhǔn)比對的重要依據(jù),所以無論是采模板還是識別,都眼看著畫面中的自己最佳。2. 另外余下的5個模板,可以空,用于以后進(jìn)行動態(tài)模板更新 (后面第二部分詳解),以適應(yīng)人臉的長

4、期發(fā)展變化。3. 采模板時,光線不宜偏亮,也不宜偏暗,適中,并充分地反映出人臉輪廓。這樣的標(biāo)準(zhǔn)化模板才能更有效地去兼容那些人臉偏亮或偏暗的識別時段。要讓識別更準(zhǔn)確,眼球附近就必須最大可能地清晰鮮明,同時眼球上最好不要反白光。4. 由于各個攝像頭的焦距不同,可能對人臉輪廓的拉伸度也不同,所以,為達(dá)到最好的識別率,建議采集與識別 完全用一模一樣的攝像頭。5. 及時畫出采集的人臉模板照片,如果發(fā)現(xiàn)其中人眼定位不準(zhǔn)確的,建議刪除該模板重采,因為這樣的模板是對識別無效的。六如何設(shè)置相似度閥值?當(dāng)前版本的人臉檢測推薦閥值為:0.55當(dāng)前版本的人臉識別1CN推存閥值為:0.71當(dāng)前版本的人臉識別1C1推存閥

5、值為:0.611人臉識別或驗證最好進(jìn)行三次,取最大值,更可靠些。2.1C1由于有個人ID的輸入或打卡,所以相似度閥值可略低些。3假定每個ID都有5個模板,且都有一張正面的BMP文件,則把所有加入的ID,用它們對應(yīng)的BMP,在內(nèi)部做一遍2選的1CN相互識別。這樣,2選的結(jié)果:會輸出兩個值,第一個為張三的照片與張三的模板的相似度,第二個是與張三最像的人的 模板與張三照片的相似度,我們關(guān)注第二個:求出第二個的平均相似度及最高相似度,再參照SDK的推薦值來共同設(shè)定。比如:SDK的推薦值=0.55全部互識別的第二個結(jié)果的平均相似度=0.2第二個結(jié)果的最高相似度 =0.41 (由于這兩個人像) 那么,說明

6、:最終閥值可定為:0.55雖然目前取0.43 (比0.41多0.02)的閥值也不會出錯,但難保外人來識別時不會錯,所以 還是用推薦值好些。再比如:SDK的推薦值=0.55全部互識別的第二個結(jié)果的平均相似度=0.3第二個結(jié)果的最高相似度 =0.56 (由于這兩個人非常像) 那么,說明:最終閥值可定為:0.58 (高于推薦值)否則:這兩個人就可能相互識別錯。六. 圖像格式,大小,人臉大小怎樣最佳?1. 圖像格式可用BMP,JPG,但最好用BMP,因為最終分析數(shù)據(jù)還是 BMP的。2. 圖像大小推薦用320*240( 240*320更好),最大可支持1280*1280,但大了會使速度減慢。3. 人臉最

7、佳采模板和識別 SIZE是:眼距40像素。七. 產(chǎn)品的適用人群僅對人臉識別而言:(即不針對人臉檢測)最適用人群:深色眼球,眉毛與眼睛界限分明,鼻尖處明暗分明。不適用人群:眼球顏色非?!皽\色”的人臉。(除此外,黑黃藍(lán)綠眼球都是可以的)年紀(jì)限制:老少男女均可識別,無頭發(fā)可,頭發(fā)擋住眉毛也可。佩戴限制:戴墨鏡不行,戴帽子可以,但不能擋住眼,戴粗黑邊眼鏡時,識別效果比不戴眼鏡稍差,但仍能 識別,其它眼鏡不影響識別,而且可以戴眼鏡采模板,不帶眼鏡識別,反之亦可。八. 人臉數(shù)據(jù)的保存1. 一個模板大約需要1MB的硬盤空間。其中含有一張檔案式人臉照片,可由SDK函數(shù)讀出并畫出。2. 注意查看一個名為Data

8、Baseni的文件,里面可對數(shù)據(jù)庫進(jìn)行配置。即可以由用戶定制ADOS接串,目前主要兼容 Access和SQLSERVER種數(shù)據(jù)庫。九. 如何鑒別兩套人臉識別 SDK的優(yōu)劣?1CN如果識別出錯(把你認(rèn)成了別人),就意味著1C1也會錯,即這個誤認(rèn)的人用你的ID號就能識別通過,所以,應(yīng)用1CN來比較人臉識別開發(fā)包(SDK的性能,幾個人采好模板后,在各種可能性的光線下都能剛 好通過的1CN閥值,就是“性能比較閥值”,(各家SDK的閥值不同,這就相當(dāng)于讓兩個 SDK都處于相同的識別能力水平上。)然后想辦法找百人照片,或千人照片,(且一個人只能有一張照片,不能重復(fù),)越多越好,以每張照片一個ID的方式加入

9、,從而構(gòu)成大型人臉模板庫,然后再一一用這些照片進(jìn)行1CN的5選,當(dāng)然第1名相似度應(yīng)是0.99以上(自身像片),而第 2,3,4, 5個相似度(其他人的像片),應(yīng)在“性能比 較閥值”之下(否則就是實際上的認(rèn)錯人了 ),而且差距越大越好,然后統(tǒng)計出這1000次操作的平均結(jié)果,就可以知道哪個 SDK識別能力強了。十.在DELPHI下做二次開發(fā)的注意事項:1. 因為是WIN32 API,所以delphi調(diào)用應(yīng)采用stdcall 方式。2. VC之 CHAR對應(yīng)的變量類型是 delphi的pchar類型。3. 定義結(jié)構(gòu)時,應(yīng)選擇record方式。第二部分(注:下文雖采用 VC語言格式進(jìn)行說明,但仍支持其

10、它語言(VB,DELPHI,C#)進(jìn)行二次開發(fā),并提供了各類編程語言的簡明范例代碼)一.結(jié)構(gòu)定義:/人臉檢測的輸出結(jié)果結(jié)構(gòu)struct DLL_OUT_FACE_STRUCTBYTE address; /無意義,傳址的LONG eye1_x;LONG eye1_y;LONG eye2_x;LONG eye2_y; /兩眼坐標(biāo),要進(jìn)行了人眼定位才有效/注意:試用版不能做人眼定位 ,只能輸出下面的人臉矩形。LONG left;LONG top;LONG right;LONG bottom;/人臉矩形LONG an gle;/人臉平面角度(正面垂直時為90度)float tally;/得分,100分

11、制,即人臉的置信度。LONG is_small_face;是小臉還是大臉,1為小臉,是啟用了小臉檢測的結(jié)果,小臉不能進(jìn)行人臉識別/LONG CloseEyeBelievable; /;/END STRUCT DEF當(dāng)是小臉時,只輸出人臉矩形,即只有人臉矩形有效,其它值無效LONG skin_color_R;/采樣膚色 COLORREF(RGB)LONG skin_color_G;/采樣膚色 COLORREF(RGB)LONG skin_color_B;/采樣膚色 COLORREF(RGB)LONG skin_hd_bright;/采樣膚色的灰度亮度。LONG left_face_le n;/從

12、左眼開始計算的左臉估計長度。LONG right_face_le n;/從右眼開始計算的右臉估計長度。float face_width_rely;/臉寬的信任度0,1)。LONG nose_x;/在原圖像中的鼻尖位置。LONG nose_y;/在原圖像中的鼻尖位置。float no se_rely;/鼻尖位置:可信任度0,1)。LONG mon th_x;/在原圖像中的嘴中心位置。LONG mo nth_y;/在原圖像中的嘴中心位置。float mon th_rely;/嘴心位置:可信任度0,1)。float glass_rely;/可能眼鏡的置信度0,1)。LONG eye1_w;/人眼的兩

13、個眼球的寬與高,人眼的兩個眼球的寬與高,但要求姿態(tài)端正,LONG eye1_h;/定位精度隨眼距的增大而增高LONG eye2_w;LONG eye2_h;/下面的值要進(jìn)行了人眼定位與人臉檢測的后期處理才有效閉眼的可能性系數(shù)輸出,值域0,1000/1CN的識別輸出結(jié)構(gòu)無意義,傳址的 相似度值域(0,1) 模板的ID 模板源文件名稱struct DLL_1CN_RECOG_OUT_STRUCT BYTE address;/float value;/char Template_ID33;/char TemplateFileName256; /;/ 一般地,SDK提供的所有函數(shù)的返回值為0,表示失敗

14、或消極結(jié)果,小于 0則表示傳入?yún)?shù)發(fā)生錯誤,上表示函數(shù)成功。- 4 -:初始化部分LONG _stdcall Initialize(CHAR *username);/ 裝入 SDK時最先執(zhí)行且只執(zhí)行一次的。II上面這個用戶名是SDK購買者的名稱:XXXX公司經(jīng)理XXX,成功返回1。/參數(shù)1表示是否載入特征庫到內(nèi)存,只做慢速的1C1(或只做人臉檢測)就不用LOAD.II參數(shù)2表示指明數(shù)據(jù)文件的路徑,數(shù)據(jù)與程序可以不在同一目錄中,如果在同一目錄,就默認(rèn)為空。II返回值,LONG線程對象的ID,線程ID值域1,64,共可建64個線程,0表示失敗II如果是多線程,則此函數(shù)必要在線程上運行,即,一個對象

15、實例,從頭到尾都只能在一個線程上建立,運行, 銷毀。LONG _stdcall Delete On eThreadObject(LONG OID);II返回值0,失敗,1,成功- 5 - # -三:識別主體部分II人臉定位的輸出數(shù)組已按從高到低的得分排了序。LONG _stdcall FaceLocate (LONG OID,IICHAR *FileName,IILONG max_o ut_nu ms, FLOAT Threshold,DLL_OUT_FACE_STRUCT *dofs); IIII第一個函數(shù)返回的人臉識別實例對象ID圖像文件名,JPG,BMPII用戶要求的最大人臉輸出數(shù)II人

16、臉置信度閥值,高于這個閥值才會被輸出人臉輸出結(jié)構(gòu)數(shù)組 返回值,實際輸出的人臉數(shù)量LONG stdcallFaceLocate_BmpData ( LONG OID,II第一個函數(shù)返回的人臉識別實例對象ID- # -BYTE *BmpData,INT width,INT height,INT bitcou nt, II 標(biāo)準(zhǔn) Windows位圖數(shù)據(jù)(lpData,320,240,24)LONG max_out_ nums,II用戶要求的最大人臉輸出數(shù)FLOAT Threshold, II人臉置信度閥值,高于這個閥值才會被輸出DLL_OUT_FACE_STRUCT *dofs); II人臉輸出結(jié)構(gòu)

17、數(shù)組II返回值,實際輸出的人臉數(shù)量,如果一張照片上有 8張人臉,則返回8.LONG _stdcallFlagFace ( LONG OID,LONG draw_window_hwnd,LONG order,LONGoffset_x=0,LONGoffset_y=0);在目標(biāo)窗口上標(biāo)志人臉(用戶可自行開發(fā))LONG _stdcallFaceLocate_FreeMemory ( LONG OID);( 用戶可自行開發(fā))LONG _stdcallLONG stdcallII人臉檢測完成后,可用作人臉識別,或畫標(biāo)志,最后在清除人臉檢測暫用的內(nèi)存。Recog1C1( LONG OID,CHAR *VI

18、D ,L ONG order,FLOAT *value,CHAR *TemplateFileName=NULL); Recog1C1_Fast(LONG OID,CHAR *VID 丄 ONG order,FLOAT *value,CHAR *TemplateFileName=NULL);/VID是指當(dāng)前檢測到的人臉和模板庫中的哪一個ID的臉做驗證。/order是人臉檢測中輸出的編號,order>=0 order< 人臉檢測輸出人臉數(shù)./比如說要對一張照片上檢測出的8張人臉全都做識別,order從0到7,調(diào)用8次人臉驗證或識別函數(shù)即可。/value 是本函數(shù)輸出的相似度,值域 0,

19、1)/TemplateFileName 請先預(yù)置256BYTE的空間,由于一個ID有多個模板,這里是輸出與當(dāng)前臉最像的模板的源 圖文件名稱。FAST_1C1在速度上比1C1快并不是絕對的,當(dāng)庫中模板數(shù)越多時FAST_1C1會漸漸變慢,比如萬人,或十萬人,或更多,有可能 FAST_1C1反而比1C1慢。/因為1C1用的是標(biāo)準(zhǔn)SQL數(shù)據(jù)庫查找模式(并比對TID對應(yīng)的所有模板),而FAST_1C1用的是內(nèi)存中逐一檢索模式(只比對TID中最相似的兩三個模板)。LONG _stdcall Recog1CN( LONG OID ,L ONG order 丄ONG max_out_ nu m,DLL_1CN

20、_RECOG_OUT_STRUCT *dros); /order 是人臉檢測中輸出的編號,order>=0 order< 輸出人臉數(shù)./max_out_num是指輸出多少個與 ORDER目似的人臉,返回值就是實際輸出數(shù)/dros 是輸出結(jié)構(gòu)四:贈送的USB視頻函數(shù)LONG _stdcall UsbVideo_Init(LONG DEVICE_ID,LONG play_window_hwnd);/ 初始化LONG stdcall UsbVideo CapO neBmp(CHAR *BmpFileName);/捉圖LONG stdcall UsbVideo E ndAII();/退出軟

21、件時調(diào)用五:模板管理部分LONG _stdcall AddFaceTemplate(LONG OID,CHAR *TID ,L ONG order);/TID是指要加入的模板ID, 個模板ID可以加入多個模板。/order是人臉檢測結(jié)果中的臉序號/以下所有刪除函數(shù)的返回值是刪除的記錄個數(shù)LONG _stdcall DelTemplateA(LONG OID,CHAR *TID,CHAR *template_file name=NULL);/如果沒有提供模板文件名,就刪除這個模板ID對應(yīng)的所有模板,否則,只刪除那一張。LONG _stdcall DelTemplateB(LONG OID,CHA

22、R *TID,LONG BH); /BH 是從 0 開始的,不從 1 開始/刪除這個模板ID對應(yīng)的時序中的第 BH張模板LONG stdcall DelAllTemplate(LONG OID);/刪除模板庫的所有模板LONG _stdcall UpdateMemory(LONG OID);/因為前面的操作都是對數(shù)據(jù)庫的,所以要讓變更立即有效,就要讀庫到內(nèi)存,否則,變更只有下次重啟軟件后 才有效。/返回值是當(dāng)前內(nèi)存中的模板總數(shù)/ 如果只做慢速的 1C1,(或只做人臉檢測),則 Create。neThreadObject(LONG IS_LOAD_TZLIB=0,.J,同時,不必以后使用任何的

23、UpdateMemory,因為慢速1C1不使用載入內(nèi)存的模板特征庫。/如果只新增了一個模板,要讓它立生效(對1C1_FAST和1CN,則調(diào)用本函數(shù)。但如果是批量增加模板,則在大量增加之后,調(diào)用一次本函數(shù)即可,否則會大大浪費時間。LONG _stdcall Cou ntMemoryTidTotaleNums(LONG OID);/統(tǒng)計內(nèi)存中模板ID總數(shù),因為一個 TID (模板ID)可能有多個模板LONG _stdcall Cou ntTemplateTotaleNums(LONG OID,CHAR *TID=NULL);/統(tǒng)計數(shù)據(jù)庫中所有模板總數(shù),如果TID不為空,則是指這個 TID的模板總數(shù)

24、LONG _stdcallDraw On eTemplatePhoto (LONG OID,CHAR *TID,LONG BH, LONG object_wi ndow_hw nd,LONGstart_x=0,L ONG start_y=0, LONG IS_FLAG_EYE=1);此函數(shù)要與上一函數(shù)結(jié)合使用/TID是模板ID/BH是指畫這個模板ID的第幾張照片/object_wi ndow_hw nd是要畫的目標(biāo)窗口/start_x,start_y是照片的左上角坐標(biāo)/IS_FALG_EYE是指是否標(biāo)出眼球,如果一個照片上的眼球標(biāo)錯,大可以刪除這張照片對應(yīng)的模板,因為可能導(dǎo)致 識別出錯!六:輸

25、出調(diào)試變量LONG _stdcall GetA(LONG OID ,L ONG PARA_NAME_ORDER);/下面將返回最近一次的功能函數(shù)執(zhí)行所用的時間:單位ms返回識別函數(shù)所用的毫秒數(shù)#define de_out_recog_1cn_use_time1 /zGetA(OID,de_out_recog_1cn_use_time)(不包含人臉檢測的)/1C1快速1C1人臉檢測添加模板返回任何一種刪除模板返回更新內(nèi)存模板特征函數(shù)所用的時間函數(shù)所用的時間,注意,模板越多,速度#define de out recog 1c1 use time 2#defi ne de_out_recog_fas

26、t_1c1_use_time 3 /#defi ne de_o ut_fin d_face_use_time 4/#defi ne de_out_add_template_use_time 5 /#defi ne de_out_del_template_use_time 6 /#define de_out_update_memory_use_time 7 /越慢#define de_out_is_template_update_happenn_recog 8/最近的一次人臉識別或認(rèn)證有無發(fā)生動態(tài)模板更新如果發(fā)生:/如果后續(xù)進(jìn)行的是1CN或FAST_1C1建議可以進(jìn)行一次UpdateMemory

27、(),使當(dāng)前更新立即生效。但也要注意UpdateMemory()在模板上千后會很慢。七:參數(shù)設(shè)置(一般不必設(shè)置)LONG _stdcall SetA(LONG OID,LONG PARA_NAME_ORDER,LONG VALUE);/BOOL 型及整形參數(shù)設(shè)置 LONG _stdcall SetB(LONG OID,LONG PARA_NAME_ORDER,FLOAT VALUE)/ 小數(shù)型的參數(shù)設(shè)置 PARA_NAME_ORDE是參數(shù)的宏名稱(數(shù)字編號)/下面就是具體的定義:/初始值:是指建立人臉識別對象時就默認(rèn)已有的設(shè)置值,用戶可根據(jù)實際情況作一些修改。/LONG型就調(diào)用函數(shù)A,FLOA

28、T型就調(diào)用函數(shù)B#define de_is_auto_backlighting_repair 1 /LONG型,初始值 1/是否開啟自動逆光補償(又名背光補償)功能。/對于門禁,人臉電腦密碼等,可能讓攝像頭背光(逆光)的地方,即人臉暗,但光線在背后,且很亮,采用。/注意:在背景暗,人臉亮的地方采用,會起很大的負(fù)面效果。即正常光線情況下建議不采用。/注意:背光補充的有效區(qū)在畫面的中下方,就是除掉畫面的上 1/3,左1/3,右1/3后的余下部分。所認(rèn)為的光源是在畫面的上 1/3處。#define de_ZW_HALF_UP_LIGHT_LD_MIN_VALUE 1001 /LONG,初始值 180

29、,當(dāng)開啟了背光補償功能功能后,圖像上方1/3最小亮度要大于這個值才能做背光補償#defi ne de_ZW_HALF_UP_LIGHT_LD_MIN_BD02 /FLOAT, 初始值 1.8f,當(dāng)開啟了背光補償功能功能后,上1/3的亮度比中1/3的亮度高多少倍才能做背光補償#define de_backlighting_repair_base_value 2 /LONG,初始值 33,最大值 100/背光補償:補多少?#define de_is_green_eye_ball_optimize 3 /是否綠眼球化化 丄ONG型,初始值 0#define de_is_blue_eye_ball_o

30、ptimize 4 /是否藍(lán)眼球優(yōu)化 丄ONG型,初始值 0/優(yōu)點是利于這兩種色的眼球的定位(有利于人眼定位的精確性,尤其是有非黑眼球人的情況下)/注意:在綠光,藍(lán)光特重的燈光下,人臉呈現(xiàn)綠色或藍(lán)色時,易出現(xiàn)人眼定位錯,從而使人臉識別錯。(不影 響人臉檢測)/初值為1,主要是用于有外國人,但沒有綠藍(lán)光照的場合#define de_is_secondocate_eye 5/進(jìn)行人眼定位 丄ONG型,初始值1#define de_is_second_locate_eye_infection 6 /進(jìn)行人眼定位后的后期計算(如是否戴眼鏡的判斷),只有上一個開關(guān)打開的情況下,本開關(guān)才有效。LONG型,

31、初始值1/如果要進(jìn)行人臉識別與驗證,這兩個開關(guān)都必要打開。/如果只是盡可能多地捕捉人臉,這兩個開關(guān)最好關(guān)掉,以節(jié)省時間。/下面的六項開關(guān),依賴于上一個開關(guān)的打開才有效#defi ne de_is_seco ndo cate_eye_i nfection_GETFACE 6001/LONG型,初始值0,面膜提取,只有上一個開關(guān)打開的情況下,本開關(guān)才有效。 將會在數(shù)據(jù)目錄下按序生成PickUpFace_?.bmp文件,青色點表達(dá)眼心坐標(biāo)。#defi ne de_is_seco ndo cate_eye_i nfection_GETFACE_Threshold 6002/LONG型,初始值64,但依

32、賴于上一個開關(guān)的開啟才有效#defi ne de_is_seco ndo cate_eye_i nfection_CALC_EYEWHITE 6003/LONG型,初始值0是否啟動眼白運算(若要進(jìn)行打磕睡檢測)/ 輸出值: CloseEyeBelievable 實際結(jié)果要根據(jù)大量的統(tǒng)計分析數(shù)據(jù)來盼定,不能靠一次性的 CloseEyeBelievable 。#define de_is_second_locate_eye_infection_FOR_RECOG_OR_GLASS 6004/LONG 型,初始值 1 是否為的是:人臉識別或眼鏡判定 ,如果下一步要采模板或識別,此項必要。#define

33、 de_is_second_locate_eye_infection_FACE_BORDER 6005/LONG 型, 初始值 1 是否啟動人臉邊界查找。#define de_is_second_locate_eye_infection_FACE_NOSE_MONTH 6006/LONG 型 , 初始值 1 是否啟動鼻嘴查找。#define de_vertical_angle_limit 7 /LONG型 , 初始值 60/ 人臉檢測中平面旋轉(zhuǎn)的角度范圍/ 一般地,監(jiān)控可為 45 度,識別 30 度(可以省時,可以降低錯捉率,機會多也就意味著錯誤也多, 很多歪臉都是錯捉的 ) 。/ 注:最大可

34、設(shè)置到 80 度,但人臉檢測的速度會相對變慢#define de_automode 8 /LONG型 , 初始值 1/ 人臉檢測自動模式 , 自動模式下用的時間可以少些,但在多張臉同時存在時,有較小可能漏捉人臉。#define de_is_run_smalle_face 9 /LONG型 , 初始值 0/ 極小臉是否啟動的 " 全局總開關(guān) ",/ 當(dāng)最終用戶的要求及格分在 80 分以上時,建議關(guān)小臉,小臉檢測無意義,白浪費大量時間,因為其分率只在 50-80 分段,上 70 分的都只是極少數(shù)。/ 所以此時小臉檢測自行關(guān)閉,以減少時間占用。/ 當(dāng)用于人臉識別時,建議關(guān)小臉,小

35、臉檢測只在進(jìn)行高靈敏度的只捉人臉的監(jiān)控時啟用。#define de_is_color_filter 10/LONG 型,初始值 0, 膚色過濾 默認(rèn)關(guān)閉,如打開,會排除青藍(lán)色區(qū)域,以提高人臉檢測的速度。 #define de_color_filter_min_bmp_width 11/LONG型,初始值300,作膚色過濾的最小位圖寬,因為對于一些小的位圖,沒有必要做膚色過濾。#define de_face_locate_zdz 12 /FLOAT型, 初值 0.0783f (第一次查找人臉時的)#define de_face_locate_bank_zdz 13/FLOAT 型, 初值 0.0

36、525f (第二次查找人臉時的,在自動人臉檢測模式 下,第一次未找到及格人臉,會發(fā)動第二次)#define de_face_is_use_bank 131 /LONG,1, 是否啟動第二次查找,用 de_face_locate_bank_zdz 這個值,對 自動模式和非自動模式都有效。/ 在人臉檢測中,查找人臉內(nèi)部輪廓的邊緣檢測閥值,有時一張圖有人臉卻找不到,略改一點兒就找到了,這兩 個預(yù)設(shè)值代表大多數(shù)測試的經(jīng)驗最優(yōu)值。/ 下面主要針對導(dǎo)出的 FlagFace 函數(shù)而言/ 目前,下面這些定位的精度是有條件的,只有在人臉正,光線正的條件下才能保證準(zhǔn)確度,否則只能是個大約 的范圍估計。#defin

37、e de_flagface_draw_eye 14 /LONG型, 初始值 1, 是否畫眼- 10 -#define de_is_draw_face_border 15 /LONG #define de_is_draw_nose_month 16 /LONG #define de_draw_nose_month_rely 17 /FLOAT,#define de_draw_face_width_rely 18 /FLOAT ,型 , 初始值 1, 是否畫臉邊界型,初始值 1, 是否標(biāo)志鼻嘴初始值 0.3f, 畫出鼻嘴的最低置信度初始值 0.4f, 畫出臉寬 (臉邊界 ) 的最低置信度#defi

38、ne de_is_have_glass_threshold 19 , 無開關(guān),但高于 1.0f 就不畫了/FLOAT , 初始值 0.65f; 畫出眼鏡標(biāo)記的最低置信度/ 下面是關(guān)于模板管理的/ 關(guān)于模板更新#define de_is_adding_template_scroll 20/LONG型, 初始值 1/ 在添加模板時,人臉模板是否超過限制量就滾動。如果未啟動滾動,過量就無法再加入。/ 如果啟動了滾動更新,當(dāng)?shù)竭_(dá)最大數(shù)量時,會自動刪除掉最早的模板,以維持模板總量不變。#define de_template_limite_num 21/LONG型 , 初始值 10, 即每個人最多 10

39、個模板#define de_template_scroll_reserve_num 22/LONG型 , 初始值 5/ 保持多少個最早的模板, 0,不保持, 3,則表示最早的 3 個始終不被滾動更新掉。#define de_is_template_recog_adding_update 23/LONG型 , 初始值 0,/ 識別發(fā)生后 ,相似度過指定門值 , 是否將當(dāng)前人臉加為模板。#define de_is_template_recog_hit_update 24 /LONG型 , 初始值 0,/ 識別發(fā)生后,相似度過指定門值 , 是否用當(dāng)前人臉為模板替換掉與當(dāng)前人臉最像的那個模板。 /注意

40、:這兩個BOOL是由開發(fā)人員保持其設(shè)置為互斥的。#define de_template_scroll_threshold 25/FLOAT, 初值 0.85f; 即人臉識別相似度大于了 85%,就自動更新模板/ 在用戶添加模板時,這個值無意義。這個值是出廠默認(rèn)值,但最終應(yīng)由用戶根據(jù)實際情況而定。#define de_template_hit_threshold 26/FLOAT, 初值 0.85f; 即人臉識別相似度大于了 85%,就自動更新模板 / 在識別時,相似度大于了更新門值,才可以更新模板/END 關(guān)于模板更新/ 下面是其它類函數(shù)的參數(shù)#define de_1CN_first_filt

41、er_reserve_bl 27 /FLOAT,初值 0.02f/1CN 在內(nèi)存特征中進(jìn)行過濾后的保留比 /(2%)/ 在內(nèi)存人臉特征的過濾中 ,只保留 2%的模板來做一一詳細(xì)比對, 這個值改小,會提速,尤其是在千人庫, 人庫中,但漏識率增加。八:活體識別/下為活體識別的兩條函數(shù),目的在于判別是真人臉還是人臉大照片LONG _stdcall Ini tCheck(LONG OID ,L ONG order);/初始化活體識別現(xiàn)場函數(shù),order是人臉檢測結(jié)果序,一般取第一個:0LONG _stdcall FrameCheck(LONG OID,CHAR *bmpFileName); / 注意,

42、這里傳入的一定要是BMP格式的文件,不能用JPG/幀檢測函數(shù),返回 0時,請再執(zhí)行,表示還未能判斷出來,返回小于0,表示活體識別不能通過,是作弊。返回1,表示用戶是活體。九:人工定位(V2.95版新增功能)對于送來的照片,導(dǎo)入模板庫后,進(jìn)行模板照片查看時(請參見zDrawOneTemplatePhoto函數(shù)),無法檢測到人臉或發(fā)現(xiàn)人眼定位有誤,可以刪除這個模板,用PHOTOSHO或畫筆等軟件對原照片進(jìn)行加工(這里一定要先轉(zhuǎn)成BMP進(jìn)行),在人臉的兩個眼球中心各畫一個十字架以標(biāo)定兩眼球球心,十字架的兩線寬為1,兩線的長均應(yīng)至少大于3個像素,最好是能有 9個象素長,然后保存圖像,進(jìn)行以下編程:LO

43、NG _stdcall zMakeFaceDataByHa nd(LONG OID,CHAR *FileName,LONG flag_color,LONG mi nlin ele n)/生成人工定位的人臉數(shù)據(jù),可用于加入模板或被識別。(在自動定位人眼不準(zhǔn)確的情況下可采用此方案)/ 第一個參數(shù)是線程ID,/第二個參數(shù)是BMP文件名,/第三個參數(shù)是十字架的兩條線的顏色/線的顏色最好是照片中不存在的顏色,這樣可以讓標(biāo)定達(dá)到唯一性。/ 最后一對FF是指:R(紅分量)/倒數(shù)第二對FF是指:G(綠分量)/倒數(shù)第三對FF是指最后一對FF是指:B(藍(lán)分量)/ 和做網(wǎng)頁的那個#FFFFFF意義一樣,但順序剛好相

44、反。/女口: 0x00ffff00表示青色/第四個參數(shù)是最小線長,如果畫的線小于這個長度,將無法定位到。注:一次只能從一張照片中定位一張臉。人工定位眼球來加入模板的VC范例代碼:LONG ret=zMakeFaceDataByHa nd(OID,"d:bmp_zt_flag6.bmp",0x00ffffff,5);if(ret=1)zAddFaceTemplate(OID,"張三",0); / 加入模板庫 zFaceLocate_FreeMemory(OID);回收人臉檢測內(nèi)存else :AfxMessageBox("沒有找到人工定位的兩個十字

45、");人工定位眼球來進(jìn)行識別的VC范例代碼:LONG ret仁zMakeFaceDataByHa nd(OID,"d:bmp_zt_flag4.bmp",0x00ff00ff,3);紫色線if(ret1=1)LONG ret2=zRecog1CN(OID,0,5,rout);/一對多識別,5 選/第二個參數(shù)為0,表示識別第一張臉,因為人工定位能且只能產(chǎn)生一張臉的數(shù)據(jù)/其它代碼zFaceLocate_FreeMemory(OID);回收人臉檢測內(nèi)存else :AfxMessageBox("沒有找到人工定位的兩個十字");十:多線程范例(一般應(yīng)用是

46、不使用多線程的)下為在VC中進(jìn)行多線程操作的范例代碼:注意點:1. Create On eThreadObject應(yīng)在線程中進(jìn)行。2. 普通1c1和人臉檢測線程不要 LOAD特征庫。(FAST_1C1,1CN需要LOAD特征庫)LONG OID1,OID2,OID3; / 各個線程的人臉實例 IDUINT thr1(LPVOID);UINT thr3(LPVOID);UINT thr2(LPVOID);void CP6:O nBn ClickedButto n1()/ TODO:在此添加控件通知處理程序代碼AfxBegi nThread(thr1,NULL,THREAD_PRIORITY_NO

47、RMAL);AfxBegi nThread(thr2,NULL,THREAD_PRIORITY_NORMAL);AfxBegi nThread(thr3,NULL,THREAD_PRIORITY_NORMAL); BOOL CP6: Onln itDialog()CPropertyPage:O nlni tDialog();Initialize(); /運行一次且只運行一次,不在線程中進(jìn)行。return TRUE; / return TRUE uni ess you set the focus to a control /異常:OCX屬性頁應(yīng)返回FALSEUINT thrl(LPVOID)DLL_1CN_RECOG

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論