Android人脸识别技术

时间:2014-05-21 15:54:01   收藏:0   阅读:281
       Android人脸识别技术用到的底层库:android/external/neven/,framework 层:frameworks/base/media/java/android/media/FaceDetector.java。

       java层接口的限制:

            1、只能接受bitmap的数据。

            2、只能识别出双眼睛距离不大于20像素的人脸。

            3、只能检测人脸的位置,不能对人脸匹配。

         下面代码的运行效果:


bubuko.com,布布扣

@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.andy );
		//设置最大的人脸数目
		int maxFaces = 3;
		//创建人脸识别器
		FaceDetector detector = new FaceDetector(bitmap.getWidth(),bitmap.getHeight(), maxFaces);
		//装在人脸的容器
		Face[] faces = new Face[maxFaces];
		//寻找脸
		detector.findFaces(bitmap, faces );
		//创建可以修改的bitmap
		Bitmap alterBitmap = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), bitmap.getConfig());
		Canvas canvas = new Canvas(alterBitmap);
		Paint paint = new Paint();
		canvas.drawBitmap(bitmap, 0,0, paint);
		for(Face face:faces){
			if (face != null) {
				//人脸眼睛之间的距离
				float eyesDistance = face.eyesDistance();
				//人脸中心点的坐标
				PointF point = new PointF();
				//获得人脸的中心点
				face.getMidPoint(point);
				Paint paint_ = new Paint();
				paint_.setColor(Color.GREEN);
				paint_.setAlpha(100);
				paint_.setAntiAlias(true);
				paint_.setStyle(Paint.Style.STROKE);   
				paint_.setStrokeWidth(3);  
//				canvas.drawCircle(point.x, point.y,radius , paint_);
				 canvas.drawRect(            //矩形框的位置参数  
	                        (int)(point.x - eyesDistance),   
	                        (int)(point.y - eyesDistance),   
	                        (int)(point.x + eyesDistance),   
	                        (int)(point.y + eyesDistance),   
	                        paint_); 
				ImageView iv = new ImageView(this);
				iv.setImageBitmap(alterBitmap);
				setContentView(iv);
			}
			
		}
	}

主要是通过人脸识别库,找出图片上的人脸,然后根据双眼之间的距离和人脸的中心点,就可以画出人脸的所在地。

Android人脸识别技术,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!