[Android]_ch11.11_人臉識別元件2
package com.derek.ch32_facedetect;
import android.R.integer;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.PointF;
import android.media.FaceDetector;
import android.media.FaceDetector.Face;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
int pic[]={R.drawable.img1,R.drawable.img2,R.drawable.img3,R.drawable.img4,R.drawable.img5,R.drawable.img6};
TextView tv;
ImageView iv;
Button btn;
Bitmap bitmap;
int i=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv=(ImageView)findViewById(R.id.imageView1);
tv=(TextView)findViewById(R.id.textView1);
btn=(Button)findViewById(R.id.button1);
bitmap=BitmapFactory.decodeResource(getResources(), pic[0]);
faceDetect();
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
bitmap=BitmapFactory.decodeResource(getResources(), pic[(i++)%pic.length]);
faceDetect();
}
});
}
public void faceDetect(){
Face Faces[]=new Face[pic.length];
Bitmap faceBitmap=bitmap.copy(Bitmap.Config.RGB_565, true);
FaceDetector detector=new FaceDetector(faceBitmap.getWidth(),faceBitmap.getHeight(), Faces.length);
int num=detector.findFaces(faceBitmap, Faces);
if(num>0){
tv.setText("發現"+num+"張人臉");
for(int i=0;i<num;i++){
handleFace(Faces[i]);
}
}else{
tv.setText("抱歉...未發現人臉");
iv.setImageBitmap(bitmap);
}
}
public void handleFace(Face face){
PointF point=new PointF();
float distance=face.eyesDistance();
face.getMidPoint(point);
Bitmap darwBitmap=bitmap.copy(Bitmap.Config.RGB_565 , true);
Canvas canvas=new Canvas(darwBitmap);
Paint paint=new Paint();
paint.setColor(Color.RED);
paint.setStrokeWidth(5);
paint.setStyle(Paint.Style.STROKE);
paint.setAntiAlias(true);
canvas.drawRect(point.x-2*distance, point.y-2*distance, point.x+2*distance, point.y+2*distance, paint);
iv.setImageBitmap(darwBitmap);
}
}
沒有留言:
張貼留言