精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android API教程:人臉檢測(上)

移動開發 Android
通過兩個主要的API,Android提供了一個直接在位圖上進行臉部檢測的方法,這兩個API分別是 android.media.FaceDetector和android.media.FaceDetector.Face,已經包含在Android官方API中。本教程來自Developer網站,向大家介紹了這些API,同時提供教程中實例代碼下載。

 

[[68937]]

 

圖片來源:Wikipedia

所謂人臉檢測就是指從一副圖片或者一幀視頻中標定出所有人臉的位置和尺寸。人臉檢測是人臉識別系統中的一個重要環節,也可以獨立應用于視頻監控。在數字媒體日益普及的今天,利用人臉檢測技術還可以幫助我們從海量圖片數據中快速篩選出包含人臉的圖片。 在目前的數碼相機中,人臉檢測可以用來完成自動對焦,即“臉部對焦”。“臉部對焦”是在自動曝光和自動對焦發明后,二十年來最重要的一次攝影技術革新。家用數碼相機,占絕大多數的照片是以人為拍攝主體的,這就要求相機的自動曝光和對焦以人物為基準。

via cdstm.cn

構建一個人臉檢測的Android Activity

你可以構建一個通用的Android Activity,我們擴展了基類ImageView,成為MyImageView,而我們需要進行檢測的包含人臉的位圖文件必須是565格式,API才能正常工作。被檢測出來的人臉需要一個置信測度(confidence measure),這個措施定義在android.media.FaceDetector.Face.CONFIDENCE_THRESHOLD。

最重要的方法實現在setFace(),它將FaceDetector對象實例化,同時調用findFaces,結果存放在faces里,人臉的中點轉移到MyImageView。代碼如下:

  1. public class TutorialOnFaceDetect1 extends Activity {   
  2.  private MyImageView mIV;   
  3.  private Bitmap mFaceBitmap;   
  4.  private int mFaceWidth = 200;   
  5.  private int mFaceHeight = 200;   
  6.  private static final int MAX_FACES = 1;   
  7.  private static String TAG = "TutorialOnFaceDetect";   
  8.    
  9. @Override   
  10. public void onCreate(Bundle savedInstanceState) {   
  11. super.onCreate(savedInstanceState);   
  12.    
  13. mIV = new MyImageView(this);   
  14. setContentView(mIV, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));   
  15.    
  16. // load the photo   
  17. Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.face3);   
  18. mFaceBitmap = b.copy(Bitmap.Config.RGB_565, true);   
  19. b.recycle();   
  20.    
  21. mFaceWidth = mFaceBitmap.getWidth();   
  22. mFaceHeight = mFaceBitmap.getHeight();   
  23. mIV.setImageBitmap(mFaceBitmap);   
  24.    
  25. // perform face detection and set the feature points setFace();   
  26.    
  27. mIV.invalidate();   
  28. }   
  29.    
  30. public void setFace() {   
  31. FaceDetector fd;   
  32. FaceDetector.Face [] faces = new FaceDetector.Face[MAX_FACES];   
  33. PointF midpoint = new PointF();   
  34. int [] fpx = null;   
  35. int [] fpy = null;   
  36. int count = 0;   
  37.    
  38. try {   
  39. fd = new FaceDetector(mFaceWidth, mFaceHeight, MAX_FACES);   
  40. count = fd.findFaces(mFaceBitmap, faces);   
  41. } catch (Exception e) {   
  42. Log.e(TAG, "setFace(): " + e.toString());   
  43. return;   
  44. }   
  45.    
  46. // check if we detect any faces   
  47. if (count > 0) {   
  48. fpx = new int[count];   
  49. fpy = new int[count];   
  50.    
  51. for (int i = 0; i < count; i++) {   
  52. try {   
  53. faces[i].getMidPoint(midpoint);   
  54.    
  55. fpx[i] = (int)midpoint.x;   
  56. fpy[i] = (int)midpoint.y;   
  57. } catch (Exception e) {   
  58. Log.e(TAG, "setFace(): face " + i + ": " + e.toString());   
  59. }   
  60. }   
  61. }   
  62.    
  63. mIV.setDisplayPoints(fpx, fpy, count, 0);   
  64. }   
  65. }  

接下來的代碼中,我們在MyImageView中添加setDisplayPoints() ,用來在被檢測出的人臉上標記渲染。圖1展示了一個標記在被檢測處的人臉上處于中心位置。

  1. // set up detected face features for display   
  2. public void setDisplayPoints(int [] xx, int [] yy, int total, int style) {   
  3.  mDisplayStyle = style;   
  4.  mPX = null;   
  5.  mPY = null;   
  6.    
  7. if (xx != null && yy != null && total > 0) {   
  8. mPX = new int[total];   
  9. mPY = new int[total];   
  10.    
  11. for (int i = 0; i < total; i++) {   
  12. mPX[i] = xx[i];   
  13. mPY[i] = yy[i];   
  14. }   
  15. }   
  16. }  

 

 

圖1:單一人臉檢測

多人臉檢測

通過FaceDetector可以設定檢測到人臉數目的上限。比如設置最多只檢測10張臉:

  1. private static final int MAX_FACES = 10;  

圖2展示檢測到多張人臉的情況。

 

 

圖2:多人人臉檢測

定位眼睛中心位置

Android人臉檢測返回其他有用的信息,例同時會返回如eyesDistance,pose,以及confidence。我們可以通過eyesDistance來定位眼睛的中心位置。

下面的代碼中,我們將setFace()放在doLengthyCalc()中。同時圖3展示了定位眼睛中心位置的效果。

  1. public class TutorialOnFaceDetect extends Activity {   
  2.  private MyImageView mIV;   
  3.  private Bitmap mFaceBitmap;   
  4.  private int mFaceWidth = 200;   
  5.  private int mFaceHeight = 200;   
  6.  private static final int MAX_FACES = 10;   
  7.  private static String TAG = "TutorialOnFaceDetect";   
  8. private static boolean DEBUG = false;   
  9.    
  10. protected static final int GUIUPDATE_SETFACE = 999;   
  11. protected Handler mHandler = new Handler(){   
  12. // @Override   
  13. public void handleMessage(Message msg) {   
  14. mIV.invalidate();   
  15.    
  16. super.handleMessage(msg);   
  17. }   
  18. };   
  19.    
  20. @Override   
  21. public void onCreate(Bundle savedInstanceState) {   
  22. super.onCreate(savedInstanceState);   
  23.    
  24. mIV = new MyImageView(this);   
  25. setContentView(mIV, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));   
  26.    
  27. // load the photo   
  28. Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.face3);   
  29. mFaceBitmap = b.copy(Bitmap.Config.RGB_565, true);   
  30. b.recycle();   
  31.    
  32. mFaceWidth = mFaceBitmap.getWidth();   
  33. mFaceHeight = mFaceBitmap.getHeight();   
  34. mIV.setImageBitmap(mFaceBitmap);   
  35. mIV.invalidate();   
  36.    
  37. // perform face detection in setFace() in a background thread   
  38. doLengthyCalc();   
  39. }   
  40.    
  41. public void setFace() {   
  42. FaceDetector fd;   
  43. FaceDetector.Face [] faces = new FaceDetector.Face[MAX_FACES];   
  44. PointF eyescenter = new PointF();   
  45. float eyesdist = 0.0f;   
  46. int [] fpx = null;   
  47. int [] fpy = null;   
  48. int count = 0;   
  49.    
  50. try {   
  51. fd = new FaceDetector(mFaceWidth, mFaceHeight, MAX_FACES);   
  52. count = fd.findFaces(mFaceBitmap, faces);   
  53. } catch (Exception e) {   
  54. Log.e(TAG, "setFace(): " + e.toString());   
  55. return;   
  56. }   
  57.    
  58. // check if we detect any faces   
  59. if (count > 0) {   
  60. fpx = new int[count * 2];   
  61. fpy = new int[count * 2];   
  62.    
  63. for (int i = 0; i < count; i++) {   
  64. try {   
  65. faces[i].getMidPoint(eyescenter);   
  66. eyesdist = faces[i].eyesDistance();   
  67.    
  68. // set up left eye location   
  69. fpx[2 * i] = (int)(eyescenter.x - eyesdist / 2);   
  70. fpy[2 * i] = (int)eyescenter.y;   
  71.    
  72. // set up right eye location   
  73. fpx[2 * i + 1] = (int)(eyescenter.x + eyesdist / 2);   
  74. fpy[2 * i + 1] = (int)eyescenter.y;   
  75.    
  76. if (DEBUG) {   
  77. Log.e(TAG, "setFace(): face " + i + ": confidence = " + faces[i].confidence()   
  78. + ", eyes distance = " + faces[i].eyesDistance()   
  79. + ", pose = ("+ faces[i].pose(FaceDetector.Face.EULER_X) + ","   
  80. + faces[i].pose(FaceDetector.Face.EULER_Y) + ","   
  81. + faces[i].pose(FaceDetector.Face.EULER_Z) + ")"   
  82. + ", eyes midpoint = (" + eyescenter.x + "," + eyescenter.y +")");   
  83. }   
  84. } catch (Exception e) {   
  85. Log.e(TAG, "setFace(): face " + i + ": " + e.toString());   
  86. }   
  87. }   
  88. }   
  89.    
  90. mIV.setDisplayPoints(fpx, fpy, count * 2, 1);   
  91. }   
  92.    
  93. private void doLengthyCalc() {   
  94. Thread t = new Thread() {   
  95. Message m = new Message();   
  96.    
  97. public void run() {   
  98. try {   
  99. setFace();   
  100. m.what = TutorialOnFaceDetect.GUIUPDATE_SETFACE;   
  101. TutorialOnFaceDetect.this.mHandler.sendMessage(m);   
  102. } catch (Exception e) {   
  103. Log.e(TAG, "doLengthyCalc(): " + e.toString());   
  104. }   
  105. }   
  106. };   
  107.    
  108. t.start();   
  109. }   
  110. }   

 

 

圖3:定位眼睛中心位置

【編輯推薦】

  1. Android API中文文檔Button
  2. Android API中文文檔GridView
  3. Android API中文文檔ImageView
責任編輯:冰凝兒 來源: developer
相關推薦

2017-01-23 21:35:58

Android人臉檢測介紹

2013-08-26 10:53:26

人臉檢測API

2024-06-12 12:57:12

2020-12-30 08:20:04

人臉檢測Retina FacemobileNet

2019-07-02 08:00:00

JavaScriptWeb對象

2024-04-15 00:00:01

GoogleAndroid機器學習

2023-11-23 12:43:53

人臉識別程序

2024-07-18 00:00:25

PyTorch神經網絡

2019-03-27 15:10:02

開源人臉檢測庫

2018-01-23 09:17:22

Python人臉識別

2018-05-08 14:25:22

Pythondlib人臉檢測

2009-06-16 09:41:00

2015-02-10 10:08:59

JavaScript

2018-05-02 15:41:27

JavaScript人臉檢測圖像識別

2024-04-03 09:48:28

人臉檢測識別JS開源

2018-07-10 15:50:29

2022-04-05 20:54:21

OpenCVPython人臉檢測

2016-09-26 08:09:53

人臉識別seetaface開源

2020-11-02 11:24:52

算法人臉識別技術

2011-07-05 17:29:53

PhoneGapevents
點贊
收藏

51CTO技術棧公眾號

国产一伦一伦一伦| 欧美尤物巨大精品爽| 亚洲综合婷婷久久| 69成人在线| 国产99精品国产| 久久久亚洲天堂| 日韩精品无码一区二区三区久久久 | heyzo高清在线| 欧美激情影院| 97久久人人超碰| 国产精品av电影| 欧美日韩大片在线观看| 妖精一区二区三区精品视频 | 国产精品久久久久毛片| 在线精品一区| 中文字幕在线看视频国产欧美在线看完整 | 亚洲一区二区在线看| 亚洲精品无amm毛片| 日欧美一区二区| 精品精品国产国产自在线| 国产草草浮力影院| 只有精品亚洲| 午夜伦欧美伦电影理论片| 国产成人a亚洲精品| 欧美日韩色视频| 青青热久免费精品视频在线18| 亚洲欧美一区二区在线观看| 久久婷婷人人澡人人喊人人爽| 人妻aⅴ无码一区二区三区| 国产精品久一| 精品视频一区二区三区免费| 精品视频在线观看一区| 色综合久久影院| 成人午夜视频在线观看| 国产日韩欧美夫妻视频在线观看| 麻豆成人免费视频| 激情偷拍久久| 超碰97人人做人人爱少妇| 国产毛片久久久久久久| 日韩深夜影院| 亚洲国产天堂久久国产91| 天天操夜夜操很很操| fc2ppv国产精品久久| 激情偷乱视频一区二区三区| 欧美在线视频免费播放| 国产一级淫片免费| 国产综合欧美| 九九精品视频在线| 性色av无码久久一区二区三区| 日本一区二区免费高清| 国产亚洲精品久久久久久| 中文字幕一区二区三区人妻| 欧美激情网址| 亚洲欧美国产制服动漫| 久久久久久久久免费看无码 | 日本精品国语自产拍在线观看| 欧美一区二区三区成人片在线| 国产精品大片免费观看| 最新亚洲国产精品| 超薄肉色丝袜一二三| 欧美日韩黑人| 色噜噜狠狠狠综合曰曰曰| 欧美黄色高清视频| 成人羞羞网站| 精品国产欧美一区二区三区成人| 一级片黄色免费| 涩涩涩久久久成人精品| 欧美一区二区三区日韩| 欧美性猛交乱大交| 好吊妞视频这里有精品| 狠狠操狠狠色综合网| 好吊妞无缓冲视频观看| 正在播放日韩精品| 在线中文字幕一区| 乌克兰美女av| 日韩一区二区三区在线看| 精品国产乱码久久久久久老虎| youjizz.com国产| 日韩大片在线免费观看| 中文字幕国产精品久久| 麻豆明星ai换脸视频| 国产精品v亚洲精品v日韩精品 | 日韩欧美国产午夜精品| 欧美影院精品一区| 欧美国产精品日韩| 黄色小说在线观看视频| 亚洲另类黄色| 国产成人午夜视频网址| 国产一区二区三区黄片| 国产精品18久久久久| 国产精品香蕉视屏| 国产中文字幕在线视频| 日韩综合一区二区| 国产精品久久久av| 国产精品色综合| 成人avav影音| 日韩欧美一区二区三区四区五区| 国产调教视频在线观看| 亚洲国产你懂的| 日本va中文字幕| 男女免费观看在线爽爽爽视频| 亚洲午夜久久久久久久久电影网 | 麻豆精品在线视频| 欧美激情国产日韩精品一区18| 日韩欧美不卡视频| 久久精品久久99精品久久| 懂色中文一区二区三区在线视频| 青青国产在线| fc2成人免费人成在线观看播放| 蜜桃久久影院| 色网在线观看| 欧美日韩和欧美的一区二区| 欧美在线一级片| 欧美gvvideo网站| 55夜色66夜色国产精品视频| av中文字幕免费| 中文字幕免费一区| 日韩精品伦理第一区| 日韩精品卡一| 欧美日韩亚洲综合一区 | 亚洲国产精品成人综合 | 草视频在线观看| 男女视频一区二区| 国产欧美自拍| 欧美一区二区性放荡片| 少妇精品一区二区三区| 亚洲欧美偷拍一区| 久久91精品久久久久久秒播| 久久久久一区二区| 男女在线观看视频| 91精品国产色综合久久不卡蜜臀 | 日韩成人在线看| 精品国产乱码久久久久久1区2区 | 特黄视频在线观看| 亚洲特级片在线| 免费涩涩18网站入口| 天天操天天爽天天干| 手机精品视频在线观看| 狠狠色综合色区| 三级网站视频在在线播放| 欧美精品丝袜中出| 久久久久久久久久久99| 成人精品在线| 久久偷看各类女兵18女厕嘘嘘| 中文在线观看av| 久久久国产午夜精品| 国产日韩综合一区二区性色av| 99在线观看精品视频| 中文字幕中文字幕一区二区| 欧美日韩大尺度| 精品色999| 国产精品91久久| 天天操天天插天天射| 亚洲一卡二卡三卡四卡| 中文字幕一区电影| 欧美日韩乱国产| 成人99免费视频| 无码熟妇人妻av在线电影| 色妞ww精品视频7777| 久久91精品国产91久久久| 国产高清视频免费| 亚洲午夜视频在线观看| 扒开伸进免费视频| 亚洲国产黄色| 蜜桃精品久久久久久久免费影院| 欧美xxx视频| 91久久精品一区二区三| 国产三级三级看三级| 成人一区二区| 成人福利视频在线观看| 91网址在线观看| 精品少妇一区二区三区在线播放 | 日韩一区欧美| 国产欧亚日韩视频| 国内外激情在线| 欧美成人a∨高清免费观看| 国产精品 欧美 日韩| 91免费观看视频| www.激情小说.com| 久久久久久影院| 成人女人免费毛片| 三级成人黄色影院| 色狠狠久久aa北条麻妃| 亚洲高清在线观看视频| 欧美性猛xxx| 亚洲AV无码久久精品国产一区| 亚洲高清资源在线观看| 国产欧美一区二区视频| 韩国美女久久| 久久精品精品电影网| 欧美特黄一级视频| 91国产免费看| 欧美成人国产精品高潮| 91在线观看下载| xxx国产在线观看| 亚洲狠狠婷婷| 伊人久久婷婷色综合98网| 国产综合av在线| 老司机99精品99| 精品国产91久久久久久久妲己| 国产无遮挡呻吟娇喘视频| 国产精品色在线观看| 91精品人妻一区二区三区四区| 久久狠狠婷婷| 日本一级淫片演员| 亚洲日产av中文字幕| 亚洲自拍欧美色图| 网友自拍视频在线| 欧美r级在线观看| 中文字幕乱码人妻二区三区| 亚洲一区二区三区爽爽爽爽爽| 免费福利视频网站| 成人av免费在线| 亚洲一区二区在线视频观看| 免费在线亚洲| 日韩一级特黄毛片| 成人嫩草影院| 蜜桃av色综合| 国产精品一区二区中文字幕| 成人自拍性视频| 欧美free嫩15| 97超级碰在线看视频免费在线看| 国产午夜免费视频| 欧美激情99| 成人乱色短篇合集| 成人做爰视频www网站小优视频| 欧美人在线视频| 秋霞成人影院| 亚洲一品av免费观看| 韩国av免费在线观看| 91精品欧美福利在线观看| 亚洲大尺度在线观看| 欧美日韩美女在线观看| 久久午夜无码鲁丝片| 亚洲色图丝袜美腿| 亚洲a∨无码无在线观看| 久久久蜜桃精品| 在线精品一区二区三区| 高清不卡一区二区在线| 91网址在线观看精品| 麻豆精品一区二区三区| 韩国日本在线视频| 亚洲专区免费| 国产91xxx| 亚洲国产清纯| 国产特级淫片高清视频| 亚洲精品裸体| 内射国产内射夫妻免费频道| 可以免费看av的网址| 国产精品午夜春色av| 乐播av一区二区三区| 久久视频一区二区| 国产激情在线免费观看| 久久这里只有精品首页| 亚洲第一香蕉网| 国产欧美视频一区二区三区| av网站免费在线看| 久久精品日产第一区二区三区高清版| 亚洲女人天堂成人av在线| 永久看片925tv| 亚洲女同ⅹxx女同tv| 久久中文免费视频| 亚洲精品免费在线播放| 久久国产精品波多野结衣| 亚洲韩国一区二区三区| 日韩精品成人在线| 精品久久久久久国产91| caoporn国产| 欧美系列在线观看| 99热这里只有精品1| 日韩欧美亚洲国产另类| 深爱激情五月婷婷| 亚洲欧美激情四射在线日| 伊人在线视频| 久久这里有精品视频| 青春草在线免费视频| 69av在线视频| 国产精品久久久久久妇女| 91精品久久久久久久久青青| 95精品视频| 国产伦精品一区二区三区视频黑人| 男人的天堂久久| 亚洲高清资源综合久久精品| 在线成人直播| 精品无人乱码一区二区三区的优势| 国产精品xxxav免费视频| 久久精品国产精品国产精品污| 不卡视频在线| 青青青在线观看视频| 久久天堂精品| 在线视频日韩精品| www国产一区| 国产免费久久精品| 亚洲色婷婷一区二区三区| 精品国产户外野外| 一本久道久久综合无码中文| 欧美va亚洲va香蕉在线 | 欧美成人在线直播| 国产在线网站| 久久久久久久久久久久av| 最新日韩一区| 国产一区高清视频| 91亚洲国产| 日韩精品一区二区三区不卡| 国产精品原创巨作av| 国产成人精品无码免费看夜聊软件| 亚洲激情在线激情| 亚洲一卡二卡在线| 精品无人国产偷自产在线| av在线影院| 国产精品人成电影| 国产精品13p| 国产精品视频免费在线| 国偷自产视频一区二区久| 中文字幕一区综合| 日韩电影一区二区三区四区| 国产精品久久久久久在线观看| 国产精品毛片无遮挡高清| 在线观看免费av片| 精品国免费一区二区三区| 久久bbxx| 国产精品一区久久久| 久久99国产成人小视频| 欧美二区在线视频| 顶级嫩模精品视频在线看| 免费成人深夜夜行网站| 91久久一区二区| 三级视频在线| 91国产精品91| 果冻天美麻豆一区二区国产| 日本国产中文字幕| 国产一区二区三区免费| 99热6这里只有精品| 欧美中文字幕一二三区视频| 精品视频一二三| 欧美一区二区色| 色老板在线视频一区二区| 免费视频爱爱太爽了| 国产91富婆露脸刺激对白| 欧美成人免费观看视频| 91精品久久久久久久久99蜜臂| 成人免费在线电影| 国产精品白嫩美女在线观看| 国产精品午夜一区二区三区| 欧洲久久久久久| 国产农村妇女精品一二区| 成人影视免费观看| 狠狠色狠狠色综合日日五| 亚洲国产成人精品一区二区三区| 欧美日韩成人在线视频| 亚洲码欧美码一区二区三区| 好吊色欧美一区二区三区视频| 国产精品啊啊啊| 超碰男人的天堂| 欧美日韩一区二区在线播放| 飘雪影院手机免费高清版在线观看| 欧美最猛黑人xxxx黑人猛叫黄| 国产精品一在线观看| 蜜桃免费在线视频| 国产精品欧美一区喷水| 91亚洲国产成人久久精品麻豆| 超碰精品一区二区三区乱码| 一区二区三区在线免费看| 黄色成人在线看| 久久久国产精品不卡| 夜夜爽8888| 欧美国产日韩中文字幕在线| 白白在线精品| 久久久久久香蕉| 国产精品视频yy9299一区| hs视频在线观看| 国语自产精品视频在免费| 色综合中文网| 国产免费中文字幕| 亚洲国产欧美日韩另类综合| 蜜桃成人在线视频| 成人福利在线视频| 国产精品久久| 国产av自拍一区| 91精品国产欧美日韩| 99re6在线精品视频免费播放| 看高清中日韩色视频| 激情图片小说一区| 91看片在线播放| 最近2019中文字幕一页二页| 2020最新国产精品| 欧美视频第三页| 一区二区在线免费观看| 欧美日韩在线精品一区二区三区激情综 | 亚洲不卡在线播放| 亚洲第一天堂无码专区| 久久xxx视频| 男人添女人荫蒂免费视频| 国产免费成人在线视频| 性一交一乱一色一视频麻豆| 国产v综合ⅴ日韩v欧美大片| 午夜国产一区| 国产亚洲精品熟女国产成人| 精品国精品国产| 欧美成人高清视频在线观看|