{"id":58,"date":"2013-03-13T18:38:46","date_gmt":"2013-03-13T10:38:46","guid":{"rendered":"http:\/\/blog.dayandcarrot.net\/?p=58"},"modified":"2013-03-13T18:38:46","modified_gmt":"2013-03-13T10:38:46","slug":"%e8%bd%acandroid-%e4%ba%ba%e8%84%b8%e8%af%86%e5%88%ab","status":"publish","type":"post","link":"https:\/\/dayandcarrot.space\/?p=58","title":{"rendered":"[\u8f6c]android \u4eba\u8138\u8bc6\u522b"},"content":{"rendered":"<p>source:<a href=\"http:\/\/blog.sina.com.cn\/s\/blog_677fb16e010148be.html\">http:\/\/blog.sina.com.cn\/s\/blog_677fb16e010148be.html<\/a><\/p>\n<pre>\nimport android.app.Activity;\nimport android.widget.TextView;\nimport android.os.Bundle;\nimport android.media.FaceDetector;    \/\/ \u4eba\u8138\u8bc6\u522b\u63a5\u53e3\nimport android.widget.ImageView;\nimport android.graphics.BitmapFactory;\nimport android.graphics.Bitmap;\nimport android.graphics.PointF;\nimport android.graphics.Matrix;\nimport android.util.Log;\nimport android.graphics.Canvas;\nimport android.graphics.Paint;\npublic class MyDetectActivity extends Activity {\n       private ImageView mImageView;    \/\/ \u56fe\u7247\u663e\u793a\u63a7\u4ef6\n       private Bitmap mBitmap;\n       private float mScale = 1F;\n       @Override\n       public void onCreate(Bundle savedInstanceState) {\n                super.onCreate(savedInstanceState);\n                setContentView(R.layout.main);\n                mImageView = (ImageView) this.findViewById(R.id.image);\n                detect();      \/\/ \u8bc6\u522b\u51fd\u6570\n       }\n       private void handleFace(FaceDetector.Face f) {        \/\/ \u5728\u56fe\u7247\u4e0a\u5bf9\u6bcf\u5f20\u8138\u8fdb\u884c\u5904\u7406\n                PointF midPoint = new PointF();\n                int r = ((int) (f.eyesDistance() * mScale * 1.5));         \/\/ \u53d6\u773c\u775b\u95f4\u8ddd\u79bb\n                f.getMidPoint(midPoint);       \/\/ \u53d6\u8138\u7684\u4e2d\u70b9\n                midPoint.x *= mScale;\n                midPoint.y *= mScale;\n                Canvas c = new Canvas(mBitmap);\n                Paint p = new Paint();\n                p.setAntiAlias(true);\n                p.setAlpha(0x80);\n                c.drawCircle(midPoint.x, midPoint.y, r, p)        \/\/ \u7528\u534a\u900f\u660e\u6807\u51fa\u4eba\u8138\u533a\u57df;\n                mImageView.setImageBitmap(mBitmap);          \/\/ \u663e\u793a\u56fe\u7247\n       }\n       private void detect() {\n                Matrix matrix = new Matrix();\n                FaceDetector.Face[] mFaces = new FaceDetector.Face[3];         \/\/ \u5b9a\u4e49\u6700\u591a\u8bc6\u522b\u4e09\u5f20\u8138\n                int mNumFaces = 0;\n                mBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.baby);     \/\/ \u53d6\u539f\u59cb\u56fe\n                if (mBitmap == null) {\n                         return;\n                }\n                if (mBitmap.getWidth() > 256) {\n                         mScale = 256.0F \/ mBitmap.getWidth();\n                }\n                matrix.setScale(mScale, mScale);\n                Bitmap faceBitmap = Bitmap.createBitmap(mBitmap, 0, 0, mBitmap\n                                   .getWidth(), mBitmap.getHeight(), matrix, true);        \/\/ \u751f\u6210\u7f29\u653e\u540e\u7684\u65b0\u56fe\n                mScale = 1.0F \/ mScale;\n                if (faceBitmap != null) {\n                         FaceDetector detector = new FaceDetector(faceBitmap.getWidth(),\n                                            faceBitmap.getHeight(), mFaces.length); \/\/ \u521b\u5efa\u8bc6\u522b\u5668\n                         mNumFaces = detector.findFaces(faceBitmap, mFaces);    \/\/ \u8bc6\u522b\n                         if (mNumFaces > 0) {\n                                   for (int i = 0; i < mNumFaces; i++) {\n                                            handleFace(mFaces[i]);        \/\/ \u8c03\u7528\u51fd\u6570\u5bf9\u4eba\u8138\u753b\u9762\u8fdb\u884c\u5904\u7406\n                                   }\n                         }\n                }\n       }\n}\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>source:http:\/\/blog.sina.com.cn\/s\/blog_677fb16e010148be.html import android.app.Activity; import android.widget.TextView; import android.os.Bundle; import android.media.FaceDetector; \/\/ \u4eba\u8138\u8bc6\u522b\u63a5\u53e3 import android.widget.ImageView; import android.graphics.BitmapFactory; import android.graphics.Bitmap; import android.graphics.PointF; import android.graphics.Matrix; import android.util.Log; import android.graphics.Canvas; import android.graphics.Paint; public class MyDetectActivity extends Activity { private ImageView mImageView; \/\/ \u56fe\u7247\u663e\u793a\u63a7\u4ef6 private Bitmap mBitmap; private float mScale = 1F; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mImageView [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,8,9],"tags":[19],"class_list":["post-58","post","type-post","status-publish","format-standard","hentry","category-study","category-technical","category-mobilelife","tag-android"],"_links":{"self":[{"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=\/wp\/v2\/posts\/58","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=58"}],"version-history":[{"count":0,"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=\/wp\/v2\/posts\/58\/revisions"}],"wp:attachment":[{"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=58"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=58"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dayandcarrot.space\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=58"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}