本SDK開發(fā)指南指導(dǎo)您如何安裝和配置開發(fā)環(huán)境,如何通過調(diào)用 SDK 提供的接口函數(shù)(API)進(jìn)行二次開發(fā)與系統(tǒng)集成。 用戶按照要求調(diào)用SDK提供的API即可實(shí)現(xiàn)使用 人臉檢測(cè)/跟蹤、活體識(shí)別、人臉識(shí)別等服務(wù)的目的。
1. 主要返回參數(shù)
public static final int SUCCESS = 0; //執(zhí)行接口返回成功
public static final int ERROR_INVALID_PARAM = -1; //非法參數(shù)
public static final int ERROR_TOO_MANY_REQUESTS = -2; //太多請(qǐng)求
public static final int ERROR_NOT_EXIST = -3; //不存在
public static final int ERROR_FAILURE = -4; // 執(zhí)行接口返回失敗
2. FaceInfo 人臉信息
public class FaceInfo { public Rect mRect;//人臉方框 public FaceAttribute mAttr;//人臉屬性 public FaceQuality mQuality;//人臉質(zhì)量 public Landmark mLandmark;//用于存儲(chǔ)5個(gè)關(guān)鍵點(diǎn)坐標(biāo)值,依次是左眼、右眼、鼻子、左側(cè)嘴唇、右側(cè)嘴唇。 }
3. FaceAttribute 人臉屬性
public class FaceAttribute { public int mGender;//性別 0:男性;1:女性 public int mEmotion;//表情 0:平靜;1:高興 public int mAge;//年齡 }
4. FaceQuality 人臉質(zhì)量
public class FaceQuality { public float mScore;//人臉質(zhì)量的置信度 public float mLeftRight;//左右角度 public float mUpDown;//上下角度 public float mHorizontal;//水平角度 public float mClarity;//圖片清晰度 public float mBright;//亮度 }
5. 構(gòu)造函數(shù)
static FaceAPP GetInstance()
功能???獲取單例的對(duì)象,人臉識(shí)別類采用單例模式,一個(gè)類Class只有一個(gè)實(shí)例存在
參數(shù)???無
返回值??FaceAPP類型的對(duì)象
實(shí)例代碼 :
private FaceAPP face = FaceAPP.GetInstance();
6. 識(shí)別人臉特征
int Recognize( Image image, float featureArray [][512], int size, List faceinfos, int[] res )
功能???識(shí)別提交的Image中的人臉特征,然后和featureArray里這些特征數(shù)組進(jìn)行比較,找出其中相似度
???????最高的返回特征數(shù)組的二維數(shù)組的索引值
參數(shù)???image : 人臉圖片
??????featureArray : 特征數(shù)組的二維數(shù)組,特征值數(shù)組是存儲(chǔ)人臉特征信息的數(shù)組,由512個(gè)float組成。
??????size : 特征數(shù)組的二維數(shù)組大小
??????faceinfos : FaceInfo 清單?!队糜诒4娣祷厝四樤趫D片中的信息》
??????res: 執(zhí)行結(jié)果,未發(fā)現(xiàn)人臉返回 ERROR_INVALID_PARAM,
????????image中人臉不在feature數(shù)組中返回 ERROR_NOT_EXIST, 》=0特征數(shù)組的索引
返回值??執(zhí)行成功 SUCCESS
??????執(zhí)行失敗 ERROR_FAILURE
實(shí)例代碼 :
float[][] featurelist = new float[][]; //存儲(chǔ)特征值的數(shù)組 int size = featurelist.lenth; int[] ret = new int[1]; byte[] tmpPos = new byte[1024]; FaceAPP.Image image = FaceAPP.GetInstance().new Image(); image.matAddrframe = mRgbaFrame.getNativeObjAddr(); face.Recognize( image, featurelist, size, tmpPos, res );
7. 識(shí)別人臉特征(根據(jù)特征值)
int Recognize( float[] feature, float featureArray [][512], int size, float[] high, int[] res )
功能???根據(jù)已經(jīng)存在的人臉特征,然后和featureArray里這些特征數(shù)組進(jìn)行比較,找出其中相似度
??????最高的返回特征數(shù)組的二維數(shù)組的索引值,返回相似度得分值。
參數(shù)???feature : 特征數(shù)組
??????featureArray : 特征數(shù)組的二維數(shù)組,特征值數(shù)組是存儲(chǔ)人臉特征信息的數(shù)組,
????????由512個(gè)float組成。
??????size : 特征數(shù)組的二維數(shù)組大小
??????high : float[]型,返回最大得分值
??????res : 執(zhí)行結(jié)果,未發(fā)現(xiàn)人臉返回 ERROR_INVALID_PARAM,
???????image中人臉不在feature數(shù)組中返回 ERROR_NOT_EXIST,
???????》=0特征數(shù)組的索引號(hào)
返回值
??????執(zhí)行成功 SUCCESS ??????執(zhí)行失敗 ERROR_FAILURE
實(shí)例代碼 :
float[][] featurelist = new float[][]; //存儲(chǔ)特征值的數(shù)組 int size = featurelist.lenth; int[] ret = new int[1]; byte[] tmpPos = new byte[1024]; float[] feature; float[] high = float[1]; FaceAPP.Image image = FaceAPP.GetInstance().new Image(); image.matAddrframe = mRgbaFrame.getNativeObjAddr(); face.Recognize( feature, featurelist, size, high, tmpPos, res );
8. 檢測(cè)人臉
int Detect( Image image, List faceinfos, int[] res )
功能???檢測(cè)提交的圖片中的是否有人臉
參數(shù)???image : 人臉圖片,用于檢測(cè)的圖片
??????faceinfos : FaceInfo 清單?!队糜诒4娣祷厝四樤趫D片中的信息》
??????res : 執(zhí)行結(jié)果,未發(fā)現(xiàn)人臉返回 ERROR_INVALID_PARAM
返回值
??????執(zhí)行成功 SUCCESS
??????執(zhí)行失敗 ERROR_FAILURE
實(shí)例代碼 :
int[] ret = new int[1]; byte[] tmpPos = new byte[1024];//byte數(shù)組用于存位置信息 FaceAPP.Image image = FaceAPP.GetInstance().new Image(); //初始化 image.matAddrframe = mRgbaFrame.getNativeObjAddr(); //image賦值 if( success = face.Detect( image, tmpPos, res ) ){ //to do };
9. 比較特征數(shù)據(jù)
int Compare( float[] origin, float[] chose, float score )
功能???用于比較兩個(gè)feature值相似度
參數(shù)???origin : 待比較feature數(shù)組
??????chose : 用于比較的feature數(shù)組
??????score : origin和chose比較的相似度
返回值
??????執(zhí)行成功 SUCCESS
??????執(zhí)行失敗 ERROR_FAILURE
實(shí)例代碼 :
float score; float[] origin = new float[512]; Float[] chose = new float[512]; face.Compare( origin, chose, score );
10. 雙目帶有活體的提取人臉特征
int GetFeature( Image image, Image grayImage, float[] feature, List faceinfos, int[] res )
功能???獲取image中的人臉特征值數(shù)組,特征值數(shù)組是存儲(chǔ)人臉特征信息的數(shù)組,
??????由512個(gè)float型數(shù)字組成,只獲取圖片中一個(gè)人的特征,多于一人會(huì)返回錯(cuò)誤信息。
參數(shù)???image : 人臉圖片,用于檢測(cè)的圖片
??????grayImage : 紅外攝像頭獲取的圖片
??????feature : 存儲(chǔ)image中檢測(cè)到的人臉特征信息,無人臉返回空數(shù)組
??????faceinfos : FaceInfo 清單?!队糜诒4娣祷厝四樤趫D片中的信息》
??????res : 執(zhí)行結(jié)果,未發(fā)現(xiàn)人臉返回 ERROR_INVALID_PARAM
返回值
??????SUCCESS : 正確獲取人臉信息
??????ERROR_FAILURE : 未獲取到人臉信息
實(shí)例代碼 :
float[] feature = new float[512]; int[] ret = new int[1]; byte[] tmpPos = new byte[1024]; //byte數(shù)組用于存位置信息 ret = face.GetFeature( image, grayImage, feature, tmpPos, res); if( ret == SUCCESS ){ //to do 成功獲取到活體人臉特征值 }
11. 活體檢測(cè)
int DetectLiveness(Image image, List faceinfos, int[] res)
功能???檢測(cè)識(shí)別活體和非活體。
參數(shù)???image : 彩色人臉圖片,用于檢測(cè)和識(shí)別的圖片。
??????faceinfos : FaceInfo 清單?!队糜诒4娣祷厝四樤趫D片中的信息》
??????res : 執(zhí)行結(jié)果,未發(fā)現(xiàn)人臉返回 ERROR_INVALID_PARAM
返回值
??????SUCCESS : 是活體
??????ERROR_FAILURE : 非活體
實(shí)例代碼 :
int[] ret=new int[1]; ret= face.DetectLiveness(image,grayImage ,tmpPos,res); if(ret== SUCCESS){ //to do 活體檢測(cè)成功 }
12. 雙目活體檢測(cè)
int GetDetectLiveness(Image image, Image grayImage, List faceinfos, int[] res)
功能???檢測(cè)識(shí)別活體和非活體。
參數(shù)???image : 彩色人臉圖片,用于檢測(cè)和識(shí)別的圖片。
??????grayImage :紅外攝像頭獲取的圖片。
??????faceinfos : FaceInfo 清單?!队糜诒4娣祷厝四樤趫D片中的信息》
??????res : 執(zhí)行結(jié)果,未發(fā)現(xiàn)人臉返回 ERROR_INVALID_PARAM
返回值
??????SUCCESS : 是活體
??????ERROR_FAILURE : 非活體
實(shí)例代碼 :
int[] ret=new int[1]; ret= face.GetDetectLiveness(image,grayImage ,tmpPos,res); if(ret== SUCCESS){ //to do 活體檢測(cè)成功 }
13. 雙目校準(zhǔn)
int Calibration( Image image, Image grayImage, float[] scale, int[] Rect, int[] res );
功能???對(duì)紅外和普通光組成的雙攝像頭識(shí)別進(jìn)行校準(zhǔn),要求1個(gè)人在最佳位置(0.8-1米)站定,
??????大約需要校驗(yàn)20次,得到人臉框修正參數(shù)用于人臉畫框,
??????返回紅外攝像頭相對(duì)普通光的顯示區(qū)域坐標(biāo),該區(qū)域是有效識(shí)別和活體檢測(cè)區(qū)域
參數(shù)???image : 輸入紅外圖像
??????grayImage : 輸入彩色圖像
??????scale : 輸出 人臉框修正參數(shù)
??????rect : 輸出紅外圖像與彩色圖像重疊區(qū)域(紅外圖像在彩色圖像的對(duì)應(yīng)區(qū)域/推薦的檢測(cè)區(qū)域)
??????res : 執(zhí)行結(jié)果,未發(fā)現(xiàn)人臉返回 ERROR_INVALID_PARAM
返回值
??????SUCCESS : 正確校準(zhǔn)
??????ERROR_FAILURE : 校準(zhǔn)失敗
實(shí)例代碼 :
int[] ret = new int[1]; float[] scale = new float[1]; int[] rect = new int[4]; ret = face.Calibration( image, grayimage, scale, rect, res ); if( ret == SUCCESS ){ //to do 校準(zhǔn)成功 }
14. 設(shè)備激活一
int AuthorizedDevice( String uidStr, String password, Context activity )
功能???設(shè)備激活
參數(shù)???uidStr : OEMID號(hào)+合同號(hào)
??????password : 用戶密碼
返回值
??????0 : 鑒權(quán)成功
實(shí)例代碼 :
String oem_id = “1000000000000001”;//OEMID String contract_id = “0001”;//合同號(hào) String password = “0123456789abcdef0123456789abcdef”; //初始授權(quán)密碼 String uidStr = oem_id + contract_id; int res = face.AuthorizedDevice( uidStr, password, LoginActivity.this );
15. 設(shè)備激活二
int fireflyInit(Context context, String uidStr, String password)
功能???設(shè)備激活,這個(gè)接口是firefly一個(gè)臨時(shí)接口,可以永久激活設(shè)備,該接口到后面可能會(huì)被移除,
??????如果后續(xù)開發(fā)文檔中沒有該接口說明,則已被移除。開發(fā)文檔以開源Demo中的文檔為準(zhǔn)。
參數(shù)???uidStr : OEMID號(hào)+合同號(hào)
??????password : 用戶密碼
返回值
??????0 : 鑒權(quán)成功
實(shí)例代碼 :
String oem_id = “1000000000000001”;//OEMID String contract_id = “0001”;//合同號(hào) String password = “0123456789abcdef0123456789abcdef”; //初始授權(quán)密碼 String uidStr = oem_id + contract_id; int res =face.fireflyInit(LoginActivity.this, uidStr, password);
16. 設(shè)備激活三
int AuthorizedDeviceUserPassword(String uidStr, String password, Context context, String userPassword)
功能???設(shè)備激活,這個(gè)接口主要用于帶有用戶密碼的激活方式。
參數(shù)???uidStr : OEMID號(hào)+合同號(hào)
??????password : 授權(quán)密碼
??????userPassword:用戶密碼
返回值
??????0 : 鑒權(quán)成功
實(shí)例代碼 :
String oem_id =“1000000000000001”;//OEMID String contract_id =“0001”;//合同號(hào) String password = “0123456789abcdef0123456789abcdef”;//初始授權(quán)密碼 String userPassword =“012345678912”;//授權(quán)密碼; String uidStr = oem_id+contract_id; int res =face. AuthorizedDeviceUserPassword(uidStr,password, LoginActivity.this,userPassword);
17. 獲取鑒權(quán)激活狀態(tài)值
int getAuthStatus()
功能???獲取鑒權(quán)激活狀態(tài)值
參數(shù)???無
返回值
??????0 : 鑒權(quán)成功
實(shí)例代碼 :
int res = face.getAuthStatus();
18. 提取人臉特征
int GetFeature( Image image, float[] feature, List faceinfos, int[] res )
功能???獲取image中的人臉特征值數(shù)組,特征值數(shù)組是存儲(chǔ)人臉特征信息的數(shù)組,
??????由512個(gè)float型數(shù)字組成,只獲取圖片中一個(gè)人的特征。
參數(shù)???image : 人臉圖片,用于檢測(cè)的圖片
??????feature : 存儲(chǔ)image中檢測(cè)到的人臉特征信息,無人臉返回空數(shù)組
??????faceinfos : FaceInfo 清單?!队糜诒4娣祷厝四樤趫D片中的信息》
??????res : 執(zhí)行結(jié)果,未發(fā)現(xiàn)人臉返回 ERROR_INVALID_PARAM
返回值
??????SUCCESS : 正確獲取人臉信息
??????ERROR_FAILURE : 未獲取到人臉信息
實(shí)例代碼 :
float[] feature = new float[512]; int[] ret = new int[1]; byte[] tmpPos = new byte[1024]; //byte數(shù)組用于存位置信息 ret = face.GetFeature( image, feature, tmpPos, res ); if( ret == SUCCESS ){ //to do 成功獲取到人臉特征值 }
19. 提取人臉特征(根據(jù)人臉坐標(biāo)信息)
int GetFeature( Image image, FaceInfo detectInfo, float[] feature, int[] res )
功能???根據(jù)傳入的人臉和關(guān)鍵點(diǎn)坐標(biāo)信息,獲取image中的人臉特征值數(shù)組,
??????特征值數(shù)組是存儲(chǔ)人臉特征信息的數(shù)組,由512個(gè)float型數(shù)字組成,
??????只獲取圖片中一個(gè)人的特征。
參數(shù)???image : 人臉圖片,用于檢測(cè)的圖片
??????detectInfo : 檢測(cè)到的人臉信息,用于人臉特征提取
??????feature : 存儲(chǔ)image中檢測(cè)到的人臉特征信息,無人臉返回空數(shù)組
??????res : 執(zhí)行結(jié)果,未發(fā)現(xiàn)人臉返回 ERROR_INVALID_PARAM
返回值
??????SUCCESS : 正確獲取人臉信息
??????ERROR_FAILURE : 未獲取到人臉信息
實(shí)例代碼 :
float[] feature = new float[512]; int[] ret = new int[1]; float[] detectinfo = new float[]{ x0, y0, x1, y1, landmarkx0, landmarky0, landmarkx1, landmarky1, landmarkx2, landmarky2, landmarkx3, landmarky3, landmarkx4, landmarky4 } byte[] tmpPos = new byte[1024]; //byte數(shù)組用于存位置信息 ret = face.GetFeature( image, detectinfo, feature, res ); if( ret == SUCCESS ){ //to do 成功獲取到人臉特征值 }
20. 提取人臉特征(根據(jù)圖片文件)
float[] GetFeature(String path, List faceinfos)
功能???根據(jù)傳入的圖片文件路徑,獲取image中的人臉特征值數(shù)據(jù)。
參數(shù)???path :人臉圖片文件的絕對(duì)路徑
??????faceinfos : FaceInfo 清單?!队糜诒4娣祷厝四樤趫D片中的信息》
返回值
??????Float[] : 人臉特征值數(shù)組
實(shí)例代碼 :
int ret = this.FaceGetFeatureFromAddr(addr, feature, mFaceInfos, policy); if (ret == -1) { return null; } else { faceInfos.addAll(Arrays.asList(this.mFaceInfos).subList(0,ret)); return this.feature; }
21. 提取人臉關(guān)鍵點(diǎn)
int GetLandmark ( Image image, float[] landmark, int[] res )
功能???獲取人臉關(guān)鍵點(diǎn)坐標(biāo)信息
參數(shù)???Image : 人臉圖片,用于提取人臉關(guān)鍵點(diǎn)信息的圖片,只提取一個(gè)人的關(guān)鍵點(diǎn)信息
??????Landmark : 用于存儲(chǔ)5個(gè)關(guān)鍵點(diǎn)坐標(biāo)值,依次是左眼,右眼,鼻子,左側(cè)嘴唇,右側(cè)嘴唇
??????res : 執(zhí)行結(jié)果,未發(fā)現(xiàn)人臉返回 ERROR_INVALID_PARAM
返回值
??????SUCCESS : 正確獲取人臉關(guān)鍵點(diǎn)坐標(biāo)信息
??????ERROR_FAILURE : 未獲取到人臉關(guān)鍵點(diǎn)信息
實(shí)例代碼 :
float[] landmark = new float[10]; int[] ret = new int[1]; ret = face.GetLandmark( image, landmark, res); if( ret == SUCCESS ){ }
22. 人臉質(zhì)量提取
FaceInfo getQuality(long matAddrframe)
功能???傳入圖像,返回圖像中人臉位置和最大一張人臉的質(zhì)量信息。
參數(shù)???matAddrframe : 保存在Mat中圖像地址
返回值
??????FaceInfo : 用于保存返回人臉在圖片中的信息
實(shí)例代碼 :
Faceinfo faceinfo=new Faceinfo(); faceinfo=face.getQuality(matAddrframe); if(faceinfo!=null){ }
23. 參數(shù)設(shè)置
bool SetParameter( const String[] name, float value[] )
功能???設(shè)置輸入的參數(shù)名和對(duì)應(yīng)數(shù)值
參數(shù)???char[] name : 參數(shù)的名字
??????a : a參數(shù)值 內(nèi)部參數(shù),按示例設(shè)置,請(qǐng)不要隨意修改
??????b : b參數(shù)值 內(nèi)部參數(shù),按示例設(shè)置,請(qǐng)不要隨意修改
??????c : c參數(shù)值 內(nèi)部參數(shù),按示例設(shè)置,請(qǐng)不要隨意修改
??????d : d參數(shù)值 內(nèi)部參數(shù),按示例設(shè)置,請(qǐng)不要隨意修改
??????factor : 檢測(cè)人臉放大比例 內(nèi)部參數(shù),按示例設(shè)置,請(qǐng)不要隨意修改
??????min_size : 最小人臉框大小 范圍 32-80
??????faceclarity : 照片清晰度閾值 范圍 建議200-400
??????perfoptimize : 是否優(yōu)化效果 范圍 0或1
??????livenessdetect : 是否活體檢測(cè) 范圍0-1
??????gray2colorscale : 雙目活體檢測(cè)比值 范圍 0.1-0.5
??????frame_num : 優(yōu)化的幀數(shù),范圍20-40
??????quality_thresh : 圖片質(zhì)量閥值,建議范圍0.7-0.8
??????mode : 工作模式 0 閘機(jī) 1 門禁
??????facenum : 檢測(cè)最大人臉數(shù),最多支持檢測(cè)3張人臉識(shí)別1張臉,范圍1-3
??????value[] : 參數(shù)的數(shù)值(可能多個(gè))
返回值??參數(shù)設(shè)置是否成功
實(shí)例代碼 :
String[] name = { “a”, “b”,“c”, “d”, “factor”, “min_size”, “clarity”, “perfoptimize”, “l(fā)ivenessdetect”, “gray2colorscale”, “frame_num”, “qualit_thresh”, “mode”, “facenum” }; double[] value = {0.9, 0.9, 0.9, 0.715, 0.6, 64, 400, 1, 0, 0.5, 20, 0.8, 1, 1 }; face.SetParameter( name, value );
24. 參數(shù)設(shè)置(參數(shù)可變長(zhǎng)度)
bool SetParameters( String[] name, float value[] )
功能???可變長(zhǎng)度的設(shè)置輸入的參數(shù)名和對(duì)應(yīng)數(shù)值
參數(shù)???char[] name : 參數(shù)的名字(》=1),詳情見14,
??????value[] : 參數(shù)的數(shù)值(》=1個(gè))
返回值??參數(shù)設(shè)置是否成功
實(shí)例代碼 :
String[] name = { “perfoptimize”, “l(fā)ivenessdetect”, “frame_num”, “quality_thresh”, “mode”, “facenum” }; double[] value = { 1, 0, 20, 0.8, 1, 1 }; face.SetParameter( name, value );
25. 獲取版本信息
public String GetVersion()
功能???獲取當(dāng)前SDK版本的信息
參數(shù)???無
返回值??返回當(dāng)前版本信息的字符串
實(shí)例代碼 :
Face.GetVersion();
26. 獲取底層庫信息
public String GetFacelibVersion()
功能???獲取當(dāng)前SDK底層庫的信息
參數(shù)???無
返回值??返回當(dāng)前版本底層庫的字符串
實(shí)例代碼 :
Face.GetFacelibVersion();
27. 打開人臉數(shù)據(jù)庫
int OpenDB()
功能???使用人臉數(shù)據(jù)庫,內(nèi)部人臉數(shù)據(jù)庫可實(shí)現(xiàn)1:N高效快速查詢
參數(shù)???無
返回值
??????執(zhí)行成功 SUCCESS
??????執(zhí)行失敗 ERROR_FAILURE
實(shí)例代碼 :
if(face.OpenDB() == SUCCESS){ // TODO }
28. 注冊(cè)人臉
int AddDB( float[] feature, string name )
功能???注冊(cè)人臉
參數(shù)???feature : 人臉特征
??????name : 登記名字
返回值
??????執(zhí)行成功 SUCCESS
??????執(zhí)行失敗 ERROR_FAILURE
實(shí)例代碼 :
String name= “test”; int[] res=new int[]; if( Face.GetFeature( image, feature, tmpPos, res ) == SUCCESS ){ Face.AddDB ( feature, name ); }
29. 保存人臉
int SaveDB()
功能???將AddDB()寫入的數(shù)據(jù)保存到文件;如果在reboot或者斷電重啟設(shè)備之前,沒有調(diào)用SaveDB(),
??????則AddDB()添加的人臉將丟失。
參數(shù)???無
返回值
??????執(zhí)行成功 SUCCESS
??????執(zhí)行失敗 ERROR_FAILURE
實(shí)例代碼 :
Face.AddDB(feature,name); 。.. //在添加人臉之后,要確保重啟設(shè)備之前執(zhí)行Face.SaveDB(); Face.SaveDB();
30. 刪除人臉
int DelDB(string name)
功能???刪除人臉
參數(shù)???name : 要?jiǎng)h除的名字
返回值
??????執(zhí)行成功 SUCCESS
??????執(zhí)行失敗 ERROR_FAILURE
實(shí)例代碼 :
String name= “test”; Face.DelDB (name);
31. 刪除所有已注冊(cè)人臉
int DelAllDB()
功能???刪除所有已注冊(cè)人臉
參數(shù)???無
返回值
??????執(zhí)行成功 SUCCESS
??????執(zhí)行失敗 ERROR_FAILURE
實(shí)例代碼 :
Face.DelAllDB ();
32. 查詢?nèi)四樚卣鲗?duì)應(yīng)名字
String QueryDB( float[] feature, float [] score )
功能???給定人臉特征最接近的數(shù)據(jù)庫所登記的人臉,并給出相似度
參數(shù)???feature : 人臉特征
??????score : 相似度分值
返回值
??????執(zhí)行成功 返回登記名字
??????執(zhí)行失敗 返回為unknown
實(shí)例代碼 :
float[] score = new float[1]; String name = Face.QueryDB( feature, score ); if( score 》 thresh_hold ){ // TODO }
33. 關(guān)閉人臉數(shù)據(jù)庫
int CloseDB()
功能???關(guān)閉人臉數(shù)據(jù)庫
參數(shù)???無
返回值
??????執(zhí)行成功 SUCCESS
??????執(zhí)行失敗 ERROR_FAILURE
實(shí)例代碼 :
if( Face.CloseDB() == SUCCESS ){ // TODO }
34. 加載快速比對(duì)功能
int FastQueryInit()
功能???加載快速比對(duì)功能
參數(shù)???無
返回值
??????執(zhí)行成功 SUCCESS
??????執(zhí)行失敗 ERROR_FAILURE
實(shí)例代碼 :
if(Face.FastQueryInit () == SUCCESS){ // TODO }
35. 刷新快速比對(duì)緩存區(qū)
int FastQueryFlush(float [] data, int num)
功能???刷新快速比對(duì)緩存區(qū)
參數(shù)???Data : 外部特征緩存區(qū)
??????Num : 特征數(shù)量
返回值
??????執(zhí)行成功 SUCCESS
??????執(zhí)行失敗 ERROR_FAILURE
實(shí)例代碼 :
if(Face.FastQueryFlush(data,num) == SUCCESS){ // TODO }
36. 快速查詢
int FastQuery(float[] data, float[] feature, float[] scores, int num)
功能???快速查詢
參數(shù)???Data : 外部特征緩存區(qū)
??????Feature : 要查詢的特征
??????Scores:獲得的相似度
??????Num : 特征數(shù)量
返回值
??????執(zhí)行成功 SUCCESS
??????執(zhí)行失敗 ERROR_FAILURE
實(shí)例代碼 :
if(Face.FastQuery(data,feature,num) == SUCCESS){ // TODO }
37. 獲取人臉屬性
int GetFaceAttr( Image image, FaceInfo data, FaceAttribute face_attr, int *res )
功能???Detect后執(zhí)行,通過檢測(cè)獲取的人臉位置和關(guān)鍵點(diǎn)信息,獲取人臉屬性包括年齡、性別和表情 。
參數(shù)???image : 人臉圖片,用于檢測(cè)的圖片
??????data : 檢測(cè)得到的人臉位置和人臉關(guān)鍵點(diǎn)信息
??????face_attr : 存儲(chǔ)計(jì)算得到的人臉屬性
??????res : 執(zhí)行結(jié)果,未發(fā)現(xiàn)人臉返回 ERROR_INVALID_PARAM
返回值
??????SUCCESS : 正確獲取人臉屬性
??????ERROR_FAILURE : 未獲取到人臉屬性
實(shí)例代碼 :
if( face.GetFaceAttr( Image, data, attr, res ) == SUCCESS ){ // TODO }
38. 釋放人臉識(shí)別資源
public void Destroy()
功能???釋放初始化和設(shè)置參數(shù)時(shí)分配的資源
參數(shù)???無
返回值??無
實(shí)例代碼 :
Face.Destroy();
39. 示例代碼
初始化雙目攝像頭人臉識(shí)別Demo。
public class MainActivity extends Activity implements CvCameraViewListener2 { private FaceAPP face= FaceAPP.GetInstance(); //face 作為成員變量 。..。..。.. @Override protected void onCreate(Bundle savedInstanceState) { 。..。..。.. String[] name={“a”,“b”,“c”,“d”,“factor”,“min_size”,“clarity”,“perf-optimize”,“l(fā)iveness-detect”,“gray2color-scale”}; double[] value={0.9,0.9,0.9,0.715,0.6,64,400,1,0,0.5}; face.SetParameter(name,value); mainLoop = new Thread() { //人臉檢測(cè)不要放在 Android 主線程 public void run() { 。..。..。.. float[] feature=new float[512]; byte[] tmpPos = new byte[1024];// byte 數(shù)組用于存位置信息 switch (mixController.curState){ 。..。.. case mixController. STATE_IDLE : FaceAPP.Image image= FaceAPP. GetInstance ().new Image(); image.matAddrframe=mRgbaFrame.getNativeObjAddr(); int[] res=new int[1]; int ret; ret= face.GetFeature(image,feature,tmpPos,res); if(ret== SUCCESS){ //to do 成功獲取到人臉特征值 } } } } }
-
嵌入式主板
+關(guān)注
關(guān)注
7文章
6085瀏覽量
35295 -
安卓
+關(guān)注
關(guān)注
5文章
2126瀏覽量
57144 -
Firefly
+關(guān)注
關(guān)注
2文章
538瀏覽量
7027
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論