精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美成人精品影院| 欧美视频在线免费看| 91九色蝌蚪成人| 国产午夜福利片| 全国精品免费看| 在线观看av一区| 乱熟女高潮一区二区在线| 色婷婷中文字幕| 日本亚洲最大的色成网站www| 日韩在线视频观看| 无人码人妻一区二区三区免费| 久久99亚洲网美利坚合众国| 久久久久国产精品人| 国产精品美女主播| 国产精品.www| 久久人体视频| 亚洲精品久久久一区二区三区| 国产精品极品美女在线观看免费 | 国产精品视频| 精品国产依人香蕉在线精品| 97人妻天天摸天天爽天天| 成人在线视频免费看| 亚洲电影一区二区三区| 夜夜爽99久久国产综合精品女不卡 | 日本不卡在线播放| 亚洲第一天堂在线观看| 日韩av中文在线观看| 久久久久久久久久久网站| 麻豆视频免费在线播放| 小早川怜子影音先锋在线观看| 蜜桃视频第一区免费观看| 久久久久久久久网站| 可以免费看av的网址| 同性恋视频一区| 日韩欧美国产一区在线观看| 一区二区三区 欧美| 黄色小视频在线观看| 99日韩精品| 欧美久久精品一级黑人c片| 草草影院第一页| 国产精品chinese在线观看| 欧美精三区欧美精三区| 日韩视频免费在线播放| 成年人在线看| 97久久精品人人澡人人爽| 亚洲综合中文字幕在线| 久久免费公开视频| 色综合狠狠操| 在线电影av不卡网址| 国产男女猛烈无遮挡a片漫画| 第一区第二区在线| 欧美va日韩va| 亚洲一二三四五| 黄色aa久久| 一区二区国产视频| 韩国成人一区| 亚洲a视频在线观看| 国产精品影视网| 国内精品400部情侣激情| 国产老头老太做爰视频| 国产精品久久久久9999赢消| 日韩亚洲欧美成人| 特种兵之深入敌后| 高清一区二区中文字幕| 欧美福利视频一区| 91香蕉视频免费看| 亚洲国产中文在线二区三区免| 亚洲成人精品一区二区| 欧美无砖专区免费| 爱啪视频在线观看视频免费| 午夜精品福利在线| 18岁网站在线观看| 日本免费久久| 欧美日韩在线播放一区| 免费一级淫片aaa片毛片a级| 中文字幕资源网在线观看| 亚洲精品写真福利| 久久国产午夜精品理论片最新版本| 久久99亚洲网美利坚合众国| 精品女同一区二区三区在线播放| 日本久久久精品视频| 免费观看成人性生生活片| 欧美综合天天夜夜久久| 国产精品久久久久久9999| www一区二区三区| 精品国产第一区二区三区观看体验| 精品少妇人妻av一区二区三区| 成人黄色在线| 欧美电影影音先锋| 天堂www中文在线资源| 亚洲人挤奶视频| 在线性视频日韩欧美| 小泽玛利亚一区| 最新日韩av| 国产成人免费av| 国产农村妇女毛片精品| 成人一区在线观看| 日韩av在线电影观看| 自拍亚洲图区| 欧美伊人久久久久久久久影院| 久久精品亚洲天堂| 啄木系列成人av电影| 久久精品电影网站| 超碰超碰超碰超碰| 国产麻豆一精品一av一免费| 快播亚洲色图| a在线免费观看| 色八戒一区二区三区| 成熟丰满熟妇高潮xxxxx视频| **在线精品| 日韩一区二区三| 亚洲一区二区三区日韩| 亚洲美女视频| 国产精品高精视频免费| 黄色片一区二区三区| 国精产品一区一区三区mba视频 | 亚洲人成在线播放网站岛国| 亚洲熟妇无码另类久久久| 天堂av最新在线| 一本久久a久久免费精品不卡| 日韩av福利在线观看| 国产一区毛片| 97视频色精品| 成 人 黄 色 片 在线播放| 国产精品热久久久久夜色精品三区| 国产精品久久久久久久乖乖| 亚洲欧洲日韩精品在线| 国产午夜精品全部视频播放| 日本免费一二三区| 精品亚洲porn| 亚洲欧洲日韩精品| 欧美日韩精品免费观看视完整| 亚洲成av人乱码色午夜| 欧美在线视频第一页| 蜜桃免费网站一区二区三区| 蜜桃视频在线观看成人| 97蜜桃久久| 福利精品视频在线| 一级全黄裸体片| 亚洲国产不卡| 91精品久久久久久久久| 99久久精品国产一区色| 国产精品情趣视频| 国产裸体免费无遮挡| 五月激激激综合网色播| 97视频国产在线| 少妇精品视频一区二区| 亚洲综合在线观看视频| 不卡的一区二区| 亚洲最大av| 91麻豆国产精品| 男人在线资源站| 欧美电影一区二区三区| 五月天av网站| 国产剧情一区在线| 妞干网这里只有精品| 精品国产亚洲一区二区三区大结局| 久久亚洲国产成人| 国产美女www爽爽爽视频| 最新久久zyz资源站| 国产在线视频三区| 伊人久久婷婷| 久久这里精品国产99丫e6| 91av亚洲| 自拍亚洲一区欧美另类| 一区二区久久精品66国产精品| 中文字幕在线不卡一区二区三区| www.成人黄色| 国产综合色产| 国产精品久久久av久久久| 免费黄网站在线观看| 欧美亚洲愉拍一区二区| 黑人狂躁日本娇小| 丰满少妇久久久久久久| 免费黄色日本网站| 精品视频一区二区三区| 美日韩精品视频免费看| 国精产品乱码一区一区三区四区| 精品福利在线观看| 成人免费无遮挡无码黄漫视频| 麻豆久久久久久久| 亚洲天堂第一区| 电影亚洲精品噜噜在线观看 | 免费av毛片在线看| 日韩午夜在线观看| 亚欧视频在线观看| 欧美激情综合在线| 久久久久久国产精品日本| 国产精品久久777777毛茸茸| 婷婷五月色综合| 免费毛片b在线观看| 国产亚洲美女精品久久久| 国产精品久久久久久69| 亚洲成人激情综合网| 日韩免费成人av| 成人夜色视频网站在线观看| 免费在线观看日韩视频| 99热国内精品| 蜜桃成人在线| 久久av网站| 日本欧美一二三区| fc2ppv国产精品久久| 亚洲精品成人av| 91在线视频国产| 欧美性xxxxxx| 九九视频在线观看| 国产精品区一区二区三| 极品粉嫩小仙女高潮喷水久久| 九九视频精品免费| 日韩av播放器| 亚洲人体大胆视频| 美女黄色片网站| 国产调教一区二区三区| caoporn国产精品免费公开| 成人免费网站www网站高清| 久久免费精品视频| 老司机精品影院| 亚洲欧洲在线视频| 国产一级片免费视频| 亚洲一级片在线观看| 青青操在线播放| 国产女主播视频一区二区| chinese麻豆新拍video| 国产亚洲午夜| 2022中文字幕| 91亚洲国产| 日韩精品国内| 欧美尿孔扩张虐视频| 91亚洲国产成人久久精品网站| 少妇一区视频| 欧美综合在线第二页| 国产小视频在线| 亚洲第五色综合网| 国产精品一级二级| 在线观看一区二区视频| 国产微拍精品一区| 亚洲乱码国产乱码精品精可以看| 人成免费在线视频| 国产亚洲精品bt天堂精选| 欧美熟妇精品黑人巨大一二三区| 大尺度一区二区| 苍井空张开腿实干12次| 狠狠色丁香久久婷婷综合丁香| 亚洲xxxx2d动漫1| 日韩1区2区3区| 动漫av网站免费观看| 久久婷婷影院| 免费日韩在线观看| 婷婷丁香综合| 经典三级在线视频| 99热在线成人| 亚洲成人动漫在线| 欧美精品午夜| 岛国大片在线播放| 一区二区三区福利| 免费无码av片在线观看| 久久九九精品| 超碰在线97免费| 九九视频精品免费| 国产xxxxhd| 成人一级片在线观看| 人妻少妇精品视频一区二区三区| 91啪亚洲精品| 国产又粗又硬视频| 亚洲欧洲在线观看av| 波多野结衣亚洲色图| 亚洲成a人在线观看| 欧美精品二区三区| 在线一区二区视频| 国产99久久九九精品无码免费| 日韩一二三区视频| 天堂成人在线视频| 亚洲人成电影网站色xx| 老司机精品视频在线观看6| 欧美黄色三级网站| 中文在线最新版地址| 国产精品视频网| 亚洲一区二区三区在线免费| 激情小说网站亚洲综合网| 经典一区二区| 香蕉视频免费版| 一区二区日韩免费看| 羞羞的视频在线| 成人动漫精品一区二区| 亚洲精品国产91| 一区二区三区小说| 特级毛片www| 4438亚洲最大| 水莓100在线视频| 久久精品一偷一偷国产| 国产夫妻在线播放| 国产欧美精品一区二区| av成人综合| 午夜欧美一区二区三区免费观看| 欧美精品自拍| 亚洲第一中文av| 成人网在线播放| 国产精品久久久久久成人| 亚洲国产aⅴ天堂久久| 自拍偷拍福利视频| 亚洲精品一区二区三区蜜桃下载| 国产高清免费在线播放| 欧美黑人又粗大| 欧美亚洲福利| 欧美日韩成人一区二区三区| 中文字幕一区二区三区在线视频 | 国精产品一区一区三区mba桃花| 大尺度做爰床戏呻吟舒畅| 国产精品久久久久久久久动漫 | 蜜桃视频m3u8在线观看| 91久久久久久久久久| 久久不卡国产精品一区二区 | 日本激情一区二区三区| 日日噜噜噜夜夜爽亚洲精品| 丝袜诱惑一区二区| 97免费资源站| 我不卡影院28| 搡女人真爽免费午夜网站| caoporen国产精品视频| aaaa黄色片| 亚洲欧美一区二区三区孕妇| 羞羞色院91蜜桃| 精品亚洲aⅴ在线观看| 污视频在线免费观看网站| 国产欧美视频在线观看| 成人免费aaa| 国产一本一道久久香蕉| 少妇的滋味中文字幕bd| 欧美午夜美女看片| 亚洲第一成人av| 久久99热精品这里久久精品| 在线观看欧美| 一区二区成人国产精品| 免费美女久久99| 九九九视频在线观看| 91福利在线免费观看| 水莓100在线视频| 91国产视频在线播放| 风间由美一区二区av101| 91免费国产精品| 国产高清无密码一区二区三区| 国产在线观看免费视频软件| 欧美日韩一区二区在线观看| 国产无套粉嫩白浆在线2022年| 欧美一区视频在线| 波多野结衣亚洲一二三| 国产传媒一区二区三区| 亚洲夜间福利| 波多野结衣加勒比| 狠狠做深爱婷婷久久综合一区| 五月激情婷婷网| 日本久久久久久久| 日韩av有码| 激情文学亚洲色图| 亚洲美女屁股眼交| 超碰在线观看99| 97国产精品人人爽人人做| 日韩精品导航| 天天干天天综合| 亚洲青青青在线视频| 亚洲大尺度网站| 日本欧美爱爱爱| 午夜欧美在线| 永久免费未满蜜桃| 狠狠做深爱婷婷久久综合一区| 国产三区四区在线观看| 国产欧美一区二区三区在线| 自由日本语亚洲人高潮| 国产精品成人无码专区| 在线免费亚洲电影| 欧美jizz18性欧美| 国产91视觉| 天堂成人国产精品一区| 日韩精品一区二区亚洲av性色| 日韩欧美电影在线| 一级毛片久久久| 自拍偷拍一区二区三区| 久久激情综合| 国产美女网站视频| 日韩欧美高清dvd碟片| 东京一区二区| 天天操天天干天天玩| 99国产欧美久久久精品| 国产裸体美女永久免费无遮挡| 欧美高跟鞋交xxxxhd| 国产亚洲一区二区三区啪| 手机在线免费毛片| 精品日韩视频在线观看| 国产最新在线| 久久综合九色99| 国产美女久久久久| 五月天激情四射| 亚洲国产毛片完整版| 欧美人与性动交xxⅹxx| 超碰超碰超碰超碰超碰| 久久久久国产精品麻豆| 亚洲欧美高清视频| 国产女人18毛片水18精品| 日韩一区二区久久| 91ts人妖另类精品系列|