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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

10、它語(yǔ)言(VB,DELPHI,C#)進(jìn)行二次開(kāi)發(fā),并提供了各類(lèi)編程語(yǔ)言的簡(jiǎn)明范例代碼)一.結(jié)構(gòu)定義:/人臉檢測(cè)的輸出結(jié)果結(jié)構(gòu)struct DLL_OUT_FACE_STRUCTBYTE address; /無(wú)意義,傳址的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;/人臉平面角度(正面垂直時(shí)為90度)float tally;/得分,100分

11、制,即人臉的置信度。LONG is_small_face;是小臉還是大臉,1為小臉,是啟用了小臉檢測(cè)的結(jié)果,小臉不能進(jìn)行人臉識(shí)別/LONG CloseEyeBelievable; /;/END STRUCT DEF當(dāng)是小臉時(shí),只輸出人臉矩形,即只有人臉矩形有效,其它值無(wú)效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、左眼開(kāi)始計(jì)算的左臉估計(jì)長(zhǎng)度。LONG right_face_le n;/從右眼開(kāi)始計(jì)算的右臉估計(jì)長(zhǎng)度。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、個(gè)眼球的寬與高,人眼的兩個(gè)眼球的寬與高,但要求姿態(tài)端正,LONG eye1_h;/定位精度隨眼距的增大而增高LONG eye2_w;LONG eye2_h;/下面的值要進(jìn)行了人眼定位與人臉檢測(cè)的后期處理才有效閉眼的可能性系數(shù)輸出,值域0,1000/1CN的識(shí)別輸出結(jié)構(gòu)無(wú)意義,傳址的 相似度值域(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ā)生錯(cuò)誤,上表示函數(shù)成功。- 4 -:初始化部分LONG _stdcall Initialize(CHAR *username);/ 裝入 SDK時(shí)最先執(zhí)行且只執(zhí)行一次的。II上面這個(gè)用戶名是SDK購(gòu)買(mǎi)者的名稱:XXXX公司經(jīng)理XXX,成功返回1。/參數(shù)1表示是否載入特征庫(kù)到內(nèi)存,只做慢速的1C1(或只做人臉檢測(cè))就不用LOAD.II參數(shù)2表示指明數(shù)據(jù)文件的路徑,數(shù)據(jù)與程序可以不在同一目錄中,如果在同一目錄,就默認(rèn)為空。II返回值,LONG線程對(duì)象的ID,線程ID值域1,64,共可建64個(gè)線程,0表示失敗II如果是多線程,則此函數(shù)必要在線程上運(yùn)行,即,一個(gè)對(duì)象

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

16、臉置信度閥值,高于這個(gè)閥值才會(huì)被輸出人臉輸出結(jié)構(gòu)數(shù)組 返回值,實(shí)際輸出的人臉數(shù)量LONG stdcallFaceLocate_BmpData ( LONG OID,II第一個(gè)函數(shù)返回的人臉識(shí)別實(shí)例對(duì)象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人臉置信度閥值,高于這個(gè)閥值才會(huì)被輸出DLL_OUT_FACE_STRUCT *dofs); II人臉輸出結(jié)構(gòu)

17、數(shù)組II返回值,實(shí)際輸出的人臉數(shù)量,如果一張照片上有 8張人臉,則返回8.LONG _stdcallFlagFace ( LONG OID,LONG draw_window_hwnd,LONG order,LONGoffset_x=0,LONGoffset_y=0);在目標(biāo)窗口上標(biāo)志人臉(用戶可自行開(kāi)發(fā))LONG _stdcallFaceLocate_FreeMemory ( LONG OID);( 用戶可自行開(kāi)發(fā))LONG _stdcallLONG stdcallII人臉檢測(cè)完成后,可用作人臉識(shí)別,或畫(huà)標(biāo)志,最后在清除人臉檢測(cè)暫用的內(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)前檢測(cè)到的人臉和模板庫(kù)中的哪一個(gè)ID的臉做驗(yàn)證。/order是人臉檢測(cè)中輸出的編號(hào),order>=0 order< 人臉檢測(cè)輸出人臉數(shù)./比如說(shuō)要對(duì)一張照片上檢測(cè)出的8張人臉全都做識(shí)別,order從0到7,調(diào)用8次人臉驗(yàn)證或識(shí)別函數(shù)即可。/value 是本函數(shù)輸出的相似度,值域 0,

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

20、_RECOG_OUT_STRUCT *dros); /order 是人臉檢測(cè)中輸出的編號(hào),order>=0 order< 輸出人臉數(shù)./max_out_num是指輸出多少個(gè)與 ORDER目似的人臉,返回值就是實(shí)際輸出數(shù)/dros 是輸出結(jié)構(gòu)四:贈(zèng)送的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、件時(shí)調(diào)用五:模板管理部分LONG _stdcall AddFaceTemplate(LONG OID,CHAR *TID ,L ONG order);/TID是指要加入的模板ID, 個(gè)模板ID可以加入多個(gè)模板。/order是人臉檢測(cè)結(jié)果中的臉序號(hào)/以下所有刪除函數(shù)的返回值是刪除的記錄個(gè)數(shù)LONG _stdcall DelTemplateA(LONG OID,CHAR *TID,CHAR *template_file name=NULL);/如果沒(méi)有提供模板文件名,就刪除這個(gè)模板ID對(duì)應(yīng)的所有模板,否則,只刪除那一張。LONG _stdcall DelTemplateB(LONG OID,CHA

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

23、UpdateMemory,因?yàn)槁?C1不使用載入內(nèi)存的模板特征庫(kù)。/如果只新增了一個(gè)模板,要讓它立生效(對(duì)1C1_FAST和1CN,則調(diào)用本函數(shù)。但如果是批量增加模板,則在大量增加之后,調(diào)用一次本函數(shù)即可,否則會(huì)大大浪費(fèi)時(shí)間。LONG _stdcall Cou ntMemoryTidTotaleNums(LONG OID);/統(tǒng)計(jì)內(nèi)存中模板ID總數(shù),因?yàn)橐粋€(gè) TID (模板ID)可能有多個(gè)模板LONG _stdcall Cou ntTemplateTotaleNums(LONG OID,CHAR *TID=NULL);/統(tǒng)計(jì)數(shù)據(jù)庫(kù)中所有模板總數(shù),如果TID不為空,則是指這個(gè) 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是指畫(huà)這個(gè)模板ID的第幾張照片/object_wi ndow_hw nd是要畫(huà)的目標(biāo)窗口/start_x,start_y是照片的左上角坐標(biāo)/IS_FALG_EYE是指是否標(biāo)出眼球,如果一個(gè)照片上的眼球標(biāo)錯(cuò),大可以刪除這張照片對(duì)應(yīng)的模板,因?yàn)榭赡軐?dǎo)致 識(shí)別出錯(cuò)!六:輸

25、出調(diào)試變量LONG _stdcall GetA(LONG OID ,L ONG PARA_NAME_ORDER);/下面將返回最近一次的功能函數(shù)執(zhí)行所用的時(shí)間:?jiǎn)挝籱s返回識(shí)別函數(shù)所用的毫秒數(shù)#define de_out_recog_1cn_use_time1 /zGetA(OID,de_out_recog_1cn_use_time)(不包含人臉檢測(cè)的)/1C1快速1C1人臉檢測(cè)添加模板返回任何一種刪除模板返回更新內(nèi)存模板特征函數(shù)所用的時(shí)間函數(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/最近的一次人臉識(shí)別或認(rèn)證有無(wú)發(fā)生動(dòng)態(tài)模板更新如果發(fā)生:/如果后續(xù)進(jìn)行的是1CN或FAST_1C1建議可以進(jìn)行一次UpdateMemory

27、(),使當(dāng)前更新立即生效。但也要注意UpdateMemory()在模板上千后會(huì)很慢。七:參數(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ù)字編號(hào))/下面就是具體的定義:/初始值:是指建立人臉識(shí)別對(duì)象時(shí)就默認(rèn)已有的設(shè)置值,用戶可根據(jù)實(shí)際情況作一些修改。/LONG型就調(diào)用函數(shù)A,FLOA

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

29、,當(dāng)開(kāi)啟了背光補(bǔ)償功能功能后,圖像上方1/3最小亮度要大于這個(gè)值才能做背光補(bǔ)償#defi ne de_ZW_HALF_UP_LIGHT_LD_MIN_BD02 /FLOAT, 初始值 1.8f,當(dāng)開(kāi)啟了背光補(bǔ)償功能功能后,上1/3的亮度比中1/3的亮度高多少倍才能做背光補(bǔ)償#define de_backlighting_repair_base_value 2 /LONG,初始值 33,最大值 100/背光補(bǔ)償:補(bǔ)多少?#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)點(diǎn)是利于這兩種色的眼球的定位(有利于人眼定位的精確性,尤其是有非黑眼球人的情況下)/注意:在綠光,藍(lán)光特重的燈光下,人臉呈現(xiàn)綠色或藍(lán)色時(shí),易出現(xiàn)人眼定位錯(cuò),從而使人臉識(shí)別錯(cuò)。(不影 響人臉檢測(cè))/初值為1,主要是用于有外國(guó)人,但沒(méi)有綠藍(lán)光照的場(chǎng)合#define de_is_secondocate_eye 5/進(jìn)行人眼定位 丄ONG型,初始值1#define de_is_second_locate_eye_infection 6 /進(jìn)行人眼定位后的后期計(jì)算(如是否戴眼鏡的判斷),只有上一個(gè)開(kāi)關(guān)打開(kāi)的情況下,本開(kāi)關(guān)才有效。LONG型,

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

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

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

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

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

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

37、e de_flagface_draw_eye 14 /LONG型, 初始值 1, 是否畫(huà)眼- 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, 是否畫(huà)臉邊界型,初始值 1, 是否標(biāo)志鼻嘴初始值 0.3f, 畫(huà)出鼻嘴的最低置信度初始值 0.4f, 畫(huà)出臉寬 (臉邊界 ) 的最低置信度#defi

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

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

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

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

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

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

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

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

46、不使用多線程的)下為在VC中進(jìn)行多線程操作的范例代碼:注意點(diǎn):1. Create On eThreadObject應(yīng)在線程中進(jìn)行。2. 普通1c1和人臉檢測(cè)線程不要 LOAD特征庫(kù)。(FAST_1C1,1CN需要LOAD特征庫(kù))LONG OID1,OID2,OID3; / 各個(gè)線程的人臉實(shí)例 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(); /運(yùn)行一次且只運(yùn)行一次,不在線程中進(jìn)行。return TRUE; / return TRUE uni ess you set the focus to a control /異常:OCX屬性頁(yè)應(yīng)返回FALSEUINT thrl(LPVOID)DLL_1CN_RECOG

溫馨提示

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

評(píng)論

0/150

提交評(píng)論