在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → 开发API人脸检测实例

开发API人脸检测实例

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:0.67M
  • 下载次数:21
  • 浏览次数:215
  • 发布时间:2015-06-01
  • 实例类别:Android平台开发
  • 发 布 人:a123
  • 文件格式:.rar
  • 所需积分:2
 相关标签: API 系统

实例介绍

【实例简介】

【实例截图】

【核心代码】


package cliu.TutorialOnFaceDetect;

/*
 * TutorialOnFaceDetect
 * Download by http://www.codefans.net
 * [AUTHOR]: Chunyen Liu
 * [SDK   ]: Android SDK 2.1 and up
 * [NOTE  ]: developer.com tutorial, "Face Detection with Android APIs"
 */

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.PointF;
import android.media.FaceDetector;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.widget.LinearLayout.LayoutParams;

public class TutorialOnFaceDetect extends Activity {
	private MyImageView mIV;
	private Bitmap mFaceBitmap;
	private int mFaceWidth = 200;
	private int mFaceHeight = 200;   
	private static final int MAX_FACES = 10;
	private static String TAG = "TutorialOnFaceDetect";
	private static boolean DEBUG = false;
	
	protected static final int GUIUPDATE_SETFACE = 999;
	protected Handler mHandler = new Handler(){         
		// @Override         
		public void handleMessage(Message msg) {         
			mIV.invalidate();
			super.handleMessage(msg);
		}
	}; 
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mIV = new MyImageView(this);
		setContentView(mIV, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));       

		// load the photo
		Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.face3); 
		mFaceBitmap = b.copy(Bitmap.Config.RGB_565, true); 
		b.recycle();
		
		mFaceWidth = mFaceBitmap.getWidth();
		mFaceHeight = mFaceBitmap.getHeight();  
		mIV.setImageBitmap(mFaceBitmap); 
		mIV.invalidate();
		
		// perform face detection in setFace() in a background thread
		doLengthyCalc();
    }

    public void setFace() {
    	FaceDetector fd;
    	FaceDetector.Face [] faces = new FaceDetector.Face[MAX_FACES];
    	PointF eyescenter = new PointF();
    	float eyesdist = 0.0f;
    	int [] fpx = null;
    	int [] fpy = null;
    	int count = 0;
    	
    	try {
    		fd = new FaceDetector(mFaceWidth, mFaceHeight, MAX_FACES);        
    		count = fd.findFaces(mFaceBitmap, faces);
    	} catch (Exception e) {
    		Log.e(TAG, "setFace(): "   e.toString());
    		return;
    	}

    	// check if we detect any faces
    	if (count > 0) {
    		fpx = new int[count * 2];
    		fpy = new int[count * 2];

    		for (int i = 0; i < count; i  ) { 
    			try {                 
    				faces[i].getMidPoint(eyescenter);                  
    				eyesdist = faces[i].eyesDistance();                  

    				// set up left eye location
    				fpx[2 * i] = (int)(eyescenter.x - eyesdist / 2);
    				fpy[2 * i] = (int)eyescenter.y;
    				
    				// set up right eye location
    				fpx[2 * i   1] = (int)(eyescenter.x   eyesdist / 2);
    				fpy[2 * i   1] = (int)eyescenter.y;

    				if (DEBUG)
    					Log.e(TAG, "setFace(): face "   i   ": confidence = "   faces[i].confidence() 
    							  ", eyes distance = "   faces[i].eyesDistance()                             
    							  ", pose = ("  faces[i].pose(FaceDetector.Face.EULER_X)   ","                            
    							  faces[i].pose(FaceDetector.Face.EULER_Y)   ","                            
    							  faces[i].pose(FaceDetector.Face.EULER_Z)   ")"                            
    							  ", eyes midpoint = ("   eyescenter.x   ","   eyescenter.y  ")"); 
    			} catch (Exception e) { 
    				Log.e(TAG, "setFace(): face "   i   ": "   e.toString());
    			}            
    		}      
    	}

    	mIV.setDisplayPoints(fpx, fpy, count * 2, 1);
    } 

    private void doLengthyCalc() {
    	Thread t = new Thread() {
    		Message m = new Message();

    		public void run() {
    			try {
    				setFace();
    				m.what = TutorialOnFaceDetect.GUIUPDATE_SETFACE;      		    
    				TutorialOnFaceDetect.this.mHandler.sendMessage(m); 
    			} catch (Exception e) { 
    				Log.e(TAG, "doLengthyCalc(): "   e.toString());
    			}
    		}
    	};      

    	t.start();        
    }  
    
}


标签: API 系统

实例下载地址

开发API人脸检测实例

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警