編輯:關於Android編程
不能對人臉進行匹配(查找指定的臉譜)
A. 為 Camera 添加人臉識別的功能:使得 Camera 的取景器上能標識出人臉范圍;如果硬件支持,可以對人臉進行對焦。
4. 靜態圖片處理代碼實例:
package com.example.mydetect2;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PointF;
import android.media.FaceDetector; //人臉識別的關鍵類
import android.media.FaceDetector.Face;
import android.view.View;
public class MainActivity2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main_activity2);
setContentView(new myView(this)); //使用自建的view來顯示
Log.i("zhangcheng","MainActivity2 run here");
}
private class myView extends View{
private int imageWidth, imageHeight;
private int numberOfFace = 5; //最大檢測的人臉數
private FaceDetector myFaceDetect; //人臉識別類的實例
private FaceDetector.Face[] myFace; //存儲多張人臉的數組變量
float myEyesDistance; //兩眼之間的距離
int numberOfFaceDetected; //實際檢測到的人臉數
Bitmap myBitmap;
public myView(Context context){ //view類的構造函數,必須有
super(context);
BitmapFactory.Options BitmapFactoryOptionsbfo = new BitmapFactory.Options();
BitmapFactoryOptionsbfo.inPreferredConfig = Bitmap.Config.RGB_565; //構造位圖生成的參數,必須為565。類名+enum
myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.baby, BitmapFactoryOptionsbfo);
imageWidth = myBitmap.getWidth();
imageHeight = myBitmap.getHeight();
myFace = new FaceDetector.Face[numberOfFace]; //分配人臉數組空間
myFaceDetect = new FaceDetector(imageWidth, imageHeight, numberOfFace);
numberOfFaceDetected = myFaceDetect.findFaces(myBitmap, myFace); //FaceDetector 構造實例並解析人臉
Log.i("zhangcheng","numberOfFaceDetected is " + numberOfFaceDetected);
}
protected void onDraw(Canvas canvas){ //override函數,必有
canvas.drawBitmap(myBitmap, 0, 0, null); //畫出位圖
Paint myPaint = new Paint();
myPaint.setColor(Color.GREEN);
myPaint.setStyle(Paint.Style.STROKE);
myPaint.setStrokeWidth(3); //設置位圖上paint操作的參數
for(int i=0; i < numberOfFaceDetected; i++){
Face face = myFace[i];
PointF myMidPoint = new PointF();
face.getMidPoint(myMidPoint);
myEyesDistance = face.eyesDistance(); //得到人臉中心點和眼間距離參數,並對每個人臉進行畫框
canvas.drawRect( //矩形框的位置參數
(int)(myMidPoint.x - myEyesDistance),
(int)(myMidPoint.y - myEyesDistance),
(int)(myMidPoint.x + myEyesDistance),
(int)(myMidPoint.y + myEyesDistance),
myPaint);
}
}
}
}
如要注意的地方:
根據文檔描述,輸入圖片必須為Bitmap RGB565格式。
人臉的檢測方法是用雙眼來檢測人臉的位置,也就是說無法檢測到嘴、側臉等,雙眼必須同時可見,並且眼鏡會影響檢測的效果。
實際上,FaceDetector檢測到的並不是人的全臉,而只是雙眼。
實際測試中,發現圖片太小的話檢測不到人臉,試驗中使用小於100x100的圖片檢測不到人臉,但是由於Android內存有限,圖片太大的話,會出現無法加載圖片的異常。
檢測到的人臉存放到FaceDetector.Face類中,該類無法再擴展。從該類可以獲取到人眼的中心位置和雙眼之間的具體。
Android應用架構搭建
1. 前言安卓屬於小團隊開發,架構的重要性在很多公司其實不是那麼的明顯,加上現在的開源框架層出不窮,更好的幫助我們上手android項目的開發。我前兩年也在公司主導過項目
Android系統截屏功能提取
Android在4.0版本之後同時按電源鍵和音量鍵可以截取當前屏幕,截圖後會有一個過渡動畫效果,這裡提取了將效果這部分提取出來,可以用於應用截圖分享功能。 截圖功能在源碼
Android應用之——最新版本SDK V2.4實現QQ第三方登錄
為什麼要寫這篇博客呢?因為,我在做這個第三方登錄的時候,找了很多資料,發現要麼就是過時了,要麼就是說的很不清楚,很羅嗦,而且很多都是一些小demo,不是什麼實例,甚至連騰
分析Android多主題顏色的相關問題
如果您通過以下的代碼來獲取定義的顏色值context.getResources().getColor(R.color.some_color_resource_id);在