zoukankan      html  css  js  c++  java
  • android 脸部抠图

    原帖:
    http://www.eoeandroid.com/thread-205445-1-1.html

    package com.face;
    
    import android.app.Activity;
    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.os.Bundle;
    import android.view.View;
     
    public class MainActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(new myView(this));
        }
     
        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) {
                super(context);
                BitmapFactory.Options BitmapFactoryOptionsbfo = new BitmapFactory.Options();
                BitmapFactoryOptionsbfo.inPreferredConfig = Bitmap.Config.RGB_565;
                myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.p1, BitmapFactoryOptionsbfo);
                imageWidth = myBitmap.getWidth();
                imageHeight = myBitmap.getHeight();
                myFace = new FaceDetector.Face[numberOfFace];
                myFaceDetect = new FaceDetector(imageWidth, imageHeight, numberOfFace);
                numberOfFaceDetected = myFaceDetect.findFaces(myBitmap, myFace);
            }
     
            protected void onDraw(Canvas canvas) {
                // TODO Auto-generated method stub
     
                canvas.drawBitmap(myBitmap, 0, 0, null);
     
                Paint myPaint = new Paint();
                myPaint.setColor(Color.GREEN);
                myPaint.setStyle(Paint.Style.STROKE);
                myPaint.setStrokeWidth(3);
     
                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*2),
                            (int)(myMidPoint.y - myEyesDistance*2),
                            (int)(myMidPoint.x + myEyesDistance*2),
                            (int)(myMidPoint.y + myEyesDistance*2),
                            myPaint);
                }
            }
        }
    }
    

      

  • 相关阅读:
    windows启动、停止和重新启动Apache服务
    Mysql用户密码设置修改和权限分配
    MySQL数据库恢复(使用mysqlbinlog命令)
    影响MySQL性能的五大配置参数
    PHP获取文件后缀名的三种方法
    php 设计模式
    蓦然回首,那人却在灯火阑珊处
    websocket消息推送实现
    Spring任务调度之Quartz
    使用easyui的form提交表单,在IE下出现类似附件下载时提示是否保存的现象
  • 原文地址:https://www.cnblogs.com/sun_moon_earth/p/3292791.html
Copyright © 2011-2022 走看看