筆者今年做了一個(gè)和人臉有關(guān)的android產(chǎn)品,主要是獲取攝像頭返回的預(yù)覽數(shù)據(jù)流,判斷該數(shù)據(jù)流是否包含了人臉,有人臉時(shí)顯示攝像頭預(yù)覽框,無(wú)人臉時(shí)攝像頭預(yù)覽框隱藏,看上去這個(gè)功能并不復(fù)雜,其實(shí)在開(kāi)發(fā)過(guò)程中,遇到的問(wèn)題也不多,全部都處理了,在正式推出前,這個(gè)產(chǎn)品在公司內(nèi)部也測(cè)試了幾個(gè)月,也沒(méi)發(fā)現(xiàn)bug,但最近實(shí)施人員,在客戶公司做實(shí)施時(shí),反饋回來(lái)各種問(wèn)題,這些問(wèn)題有部分是程序bug,也有一部分是和硬件有關(guān),因?yàn)闇y(cè)試環(huán)境有限,筆者無(wú)法對(duì)各種型號(hào),各個(gè)廠家的硬件進(jìn)行測(cè)試,這篇文章主要是記錄,攝像頭給我們帶來(lái)的一些坑,分享給涉及到人臉開(kāi)發(fā)的朋友,讓大家少走彎路。
一:概述
Android SDK 中支持人臉檢測(cè),它提供了一個(gè)直接在位圖上進(jìn)行人臉檢測(cè)的方法,這個(gè) API 是android.media.FaceDetector,源文件路徑是:
frameworks/base/media/java/android/media/FaceDetector.java
調(diào)用 findFaces 方法就可進(jìn)行人臉檢測(cè),該方法返回檢測(cè)到的人臉總數(shù),并且會(huì)將每個(gè)”人臉”的信息保存在FaceDetector.Face 的數(shù)組中。每個(gè) Face 都包含下面幾點(diǎn)信息:
識(shí)別流程是這樣的:
1. 讀取一張圖片至 Bitmap,且該 Bitmap 必須是 565 格式。
2. 調(diào)用 findFaces 方法分析 Bitmap(注意待分析的 Bitmap 寬度必須是偶數(shù)),將探測(cè)到的人臉數(shù)據(jù)存儲(chǔ)在一個(gè)FaceDetector.Face 數(shù)組中,并返回檢測(cè)到的人臉總數(shù)。Android SDK 中的 FaceDetector 介紹
android有原生的api做人臉檢測(cè),通過(guò)android.media.FaceDetector來(lái)檢測(cè)bitmap是否包含人臉,android.media.FaceDetector.Face來(lái)檢測(cè)人臉位置信息,我們需要在activity中實(shí)現(xiàn)Carema.PreviewCallBack接口,該接口有一個(gè)onPreviewFrame方法,這個(gè)方法返回?cái)z像頭實(shí)時(shí)圖像的數(shù)據(jù)流,由于這個(gè)方法返回的數(shù)據(jù)流時(shí)nv21格式,我們需要轉(zhuǎn)換bitmap才能進(jìn)行人臉檢測(cè),轉(zhuǎn)換過(guò)程如下:byte[] --> YuvImage --> ByteArrayOutputStream --> byte[] --> bitmap ,具體轉(zhuǎn)換的代碼如下:
Camera.Size size = mtCamera.getParameters().getPreviewSize(); YuvImage yuvImage = new YuvImage(mData, ImageFormat.NV21, size.width, size.height, null); yuvImage.compressToJpeg(new Rect(0, 0, size.width, size.height), 100, mBitmapOutput); options.inPreferredConfig = Bitmap.Config.RGB_565; bitmap = BitmapFactory.decodeByteArray(mBitmapOutput.toByteArray(), 0, mBitmapOutput.toByteArray().length, options); mBitmapOutput.reset(); bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), mMatrix, false);
文章標(biāo)題:詳解android人臉檢測(cè)你一定會(huì)遇到的坑-創(chuàng)新互聯(lián)
文章出自:http://chinadenli.net/article20/dojhco.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站營(yíng)銷、網(wǎng)站策劃、靜態(tài)網(wǎng)站、網(wǎng)站排名、定制開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)