1. 程式人生 > >Android人臉識別——眼睛是視窗

Android人臉識別——眼睛是視窗

 ImageView imgView;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  
  imgView=(ImageView)findViewById(R.id.img);
  Button btnButton=(Button)findViewById(R.id.btn);
  btnButton.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    // TODO Auto-generated method stub
    secondStep(firstStep());
   }
  });
  
 }
   //Step 1. 讀取一張圖片至Bitmap
 public Bitmap firstStep()
 {
  //取圖片並轉為bitmap格式
  Bitmap sampleBmp=BitmapFactory.decodeResource(getResources(), R.drawable.img);
  //FaceDetecor只能讀取RGB 565格式的Bitmap,所以在開始識別前,我們需要將上面得到的Bitmap進行一次格式轉換。
  Bitmap tmpBmp = sampleBmp.copy(Bitmap.Config.RGB_565, true);
  return tmpBmp;
 }
 //Step2. 識別圖片中的人臉,並標識
 public void secondStep(Bitmap bitmap)
 {
  //設定最大可查的人臉數量
  int MAX_FACES=5;
  FaceDetector faceDet = new FaceDetector(bitmap.getWidth(), bitmap.getHeight(), MAX_FACES);
  //將人臉資料儲存到facelist中
  FaceDetector.Face[] faceList = new FaceDetector.Face[MAX_FACES];
  faceDet.findFaces(bitmap, faceList);
  
  //  FaceDetector API文件我們發現,它查詢人臉的原理是:找眼睛。
  //  它返回的人臉資料face,通過呼叫public float eyesDistance (),public void getMidPoint (PointF point),
  //  我們可以得到探測到的兩眼間距,以及兩眼中心點位置(MidPoint)。
  //  public float confidence () 可以返回該人臉資料的可信度(0~1),這個值越大,該人臉資料的準確度也就越高。
  RectF[] faceRects=new RectF[faceList.length];
  for (int i=0; i < faceList.length; i++) {
            FaceDetector.Face face = faceList[i];
            Log.d("FaceDet", "Face ["+face+"]");
            if (face != null) {
             //confidence標識一個匹配度,在0~1區間,越接近1,表示匹配越高。如果需要可以加上這個判斷條件
             //這裡不做判斷
                Log.d("FaceDet", "Face ["+i+"] - Confidence ["+face.confidence()+"]");
                //獲取兩眼中心點的座標位置
                PointF pf = new PointF();
                face.getMidPoint(pf);
                //這裡的框,引數分別是:左上角的X,Y  右下角的X,Y
                //也就是左上角(r.left,r.top),右下角( r.right,r.bottom)。作為定位,確定這個框的格局。
                RectF r = new RectF();
                r.left = pf.x - face.eyesDistance() / 2;
                r.right = pf.x + face.eyesDistance() / 2;
                r.top = pf.y - face.eyesDistance() / 2;
                r.bottom = pf.y + face.eyesDistance() / 2;
                faceRects[i] = r;
              //畫框:對原圖進行處理,並在圖上顯示人臉框。
            Canvas canvas = new Canvas(bitmap); 
                Paint p = new Paint(); 
                p.setAntiAlias(true); 
                p.setStrokeWidth(2); 
                p.setStyle(Paint.Style.STROKE); 
                p.setColor(Color.BLUE); 
                //畫一個圈圈
                canvas.drawCircle(r.left, pf.y, 10, p); 
                canvas.drawCircle(r.right, pf.y, 10, p); 
                //畫框
                canvas.drawRect(r, p); 
                //圖片顯示
                imgView.setImageBitmap(bitmap); 
            }
        }
  
  
 }
 
 
}

相關推薦

Android人臉識別——眼睛視窗

 ImageView imgView;  @Override  protected void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.activi

android 人臉識別踩坑實錄

隨著AI技術的發展,人臉識別的應用場景越來越多,提供技術支援的API也有好多可以選擇,但是大部分都是需要收費的,或者免費試用。由此可見人臉識別演算法確實是核心技術,不是隨便就可以獲取到的。經過多次嘗試,記錄一下自己在實現人臉識別遇到的坑吧。 也有免費的Api打著人臉識別的旗號,其實都是實現人臉檢

Android 人臉識別 活體檢測 人臉對比

      人臉識別技術應用於支付、門禁、以及手機解鎖在當下已經非常成熟,作為一個Android 開發者,掌握人臉識別技術已經是必須做的事情了,市面上比較流行的人臉識別API主要有阿里雲(5000條以內免費)、騰訊雲(收費)、以及虹軟API(免費,活

Android 人臉識別+人臉匹配(OpenCV+JavaCV)

之前不想上傳原始碼是因為程式碼寫的實在很爛,參考價值不是很大,主要程式碼都在CameraActivity中 這裡吐下槽,目前Android人臉識別技術分享的感覺很少 我也是參考一些資料和別人的程式碼加以改進 上個專案中用到的技術現在有些遺忘了,把關鍵性的程

Atitit 人臉識別 眼睛形態 attilax總結

Atitit 人臉識別  眼睛形態 attilax總結 眼睛的型別、分類。包括桃花眼,瑞鳳眼,睡鳳眼,柳葉眼,杏眼,狐狸眼,銅鈴眼,龍眼,丹鳳眼和小鹿眼等等。 1.桃花眼:眼長,眼尾略彎。眼睛四周略帶紅暈,眼形似若桃花,睫毛長,眼尾向上翹,瞳仁往上面作斜視,黑白並不分

Android 人臉識別SDK開發

開發十年,就只剩下這套架構體系了! >>>   

Face++人臉識別 android studio開發整合

最近幾年人臉識別被炒到了風口上,相對應的第三方平臺也比較多,如face++,科大訊飛,閱面科技,包括騰訊等等都有自己的人臉資料庫,以及開放的api介面,因為專案需要,因此需要在android平臺整合人臉檢測以及人臉識別技術,在此過程中也是踩了不少坑,在此,把我整合的步驟以及遇到的坑分享一下. 先

Android Google人臉識別 利用雙層 SurfaceView 原始碼 實戰

雙層SurfaceView: <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="c

【demo】用opencv+qt識別人臉眼睛

import cv2 import time ''' 基於opencv和QT的瞳孔精確檢測程式 https://blog.csdn.net/zyx1990412/article/details/51219076 基於QT和opencv的瞳孔定位及跟蹤程式 ht

android OpenCV研究之動態人臉識別

轉載自:https://blog.csdn.net/u013895206/article/details/52671550 隨著直播漸漸的火起來,像抱著直播大腿的其他功能也漸漸的火起來了,比如說人臉識別。說起人臉識別用處甚廣,比如說有以這個功能為核心的app:美顏相機、美圖秀秀、SNOW等等,但是

Android課程設計 人臉識別簽到(二)

得到 bject color stc capture tab string default contex 學習完百度人臉API的調用,現在即可開發自己的人臉識別簽到系統,下面作者先貼上部分功能源碼來給大家參考和學習 (一)百度人臉庫的人臉驗證 1° 獲取待識別的

Android使用Face++架構包實現人臉識別

今天給大家帶來一個通過使用Face++來實現人臉識別的功能 我們點開案例可以看到眾多我們熟知的軟體都是使用的這個公司所提供的SDK 然後我們點選開發者中心中的開發工具與sdk下載我們所需要的sdk 之後再點選我的應用中的建立應用之後他會給我們兩個金鑰 要儲存

基於開源專案OpenCV的人臉識別Demo版整理(不僅可以識別人臉,還可以識別眼睛鼻子嘴等)

 最近對人臉識別的程式非常感興趣,但是苦於沒有選修多媒體方向,看了幾篇關於人臉識別的論文,大概也沒看懂多少,什麼灰度處理啊,切割識別啊,雲裡霧裡,傻傻看不明白啊。各種苦惱。     於是就在網上找找,看有木有神馬開原始碼啊,要是有個現成的原始碼就更好了,百度it ,那些

android Bitmap轉化成Base64 String 人臉識別 身份證識別 駕照識別 圖片轉化成String

最近專案整合阿里雲上面的人臉識別 身份證識別 駕照識別功能 需要把拍的照片轉化成Base64 的String作文引數上傳,一下是根據圖片路徑imgPath轉化的程式碼段: public static String imgToBase64String

android 結合 opencv專案(NDK、OpenCV、android,官方Demo人臉識別

第一個android結合 opencv專案(NDK、OpenCV、android人臉識別) (2017.5.16更改,見綠色) 前提條件:已經搭建好jdk 和eclipse 開發android 和外掛CDT (eclipse c++)的環境 在命令列視窗輸入:java –v

Android移動開發-在Android專案裡整合face++人臉識別的實現

“人工智慧”是今年比較火的一個名詞,甚至大多數人認為“人工智慧”是繼“IT網際網路”之後一個新的浪潮,將會是本世紀最高科技的水準。個人覺得,目前國內語音識別做的比較好的是科大訊飛,影象識別(或人臉識別)做的比較好的是face++(曠視)。 那麼,

android自定義虹軟人臉識別框/人臉抓拍框/人臉追蹤框

有一兩個月沒有更新部落格了,最近一直在忙人臉識別的專案,先將專案中更改虹軟人臉框的方法抽取出來,希望對大家有所幫助。 為什麼要改? 先來看看sdk demo中提供的人臉框樣式,這個框看上去並不是非常美觀(個人覺得) 再看看下面這個框是不是就要順眼一點 怎麼

ios開發之人臉識別(給眼睛打上馬賽克)

#import "ViewController.h" @interfaceViewController () @end @implementationViewController - (v

Android開發初體驗之face++人臉識別加靜默拍照

最近由於公司業務方面的需要,簡單研究了一下人臉識別方面的問題,在這裡分享一下最近使用的心得和一些技術要點,主要分為以下幾個方面: 人臉識別的api介面提供商 本文使用api介面 相關文件的使用 靜默拍照的整合 人臉識別的api介面提供商 ①GOOG

基於開源專案OpenCV的人臉識別Demo版整理(不僅可以識別人臉,還可以識別眼睛鼻子嘴等)【模式識別中的翹楚】

最近對人臉識別的程式非常感興趣,但是苦於沒有選修多媒體方向,看了幾篇關於人臉識別的論文,大概也沒看懂多少,什麼灰度處理啊,切割識別啊,雲裡霧裡,傻傻看不明白啊。各種苦惱。     於是就在網上找找,看有木有神馬開原始碼啊,要是有個現成的原始碼就更好了,百度it ,那些原始碼都憂傷的躲在CSDN中,老衲還