2016年7月24日 星期日

facial detection in android

Ref  1:  http://androidbite.blogspot.tw/2012/11/android-face-detection-example.html

Ref 2 ; http://code.tutsplus.com/tutorials/an-introduction-to-face-detection-on-android--cms-25212


說明:  直接用 Ref 1 可以跑...  但是  Ref 2 有些問題...直接把Ref 2的sample code import 又可以跑

           還沒有try 出來


         


package jacky.idv.facedetectiondemo;

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 {



    @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.jennifer_lopez, BitmapFactoryOptionsbfo);            myBitmap = BitmapFactory.decodeResource(getResources(), R.raw.face , BitmapFactoryOptionsbfo);
            //
            imageWidth = myBitmap.getWidth();

            imageHeight = myBitmap.getHeight();

            myFace = new FaceDetector.Face[numberOfFace];

            myFaceDetect = new FaceDetector(imageWidth, imageHeight,

                    numberOfFace);

            numberOfFaceDetected = myFaceDetect.findFaces(myBitmap, myFace);



        }



        @Override
        protected void onDraw(Canvas canvas) {



            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);

            }

        }

    }



}

沒有留言:

張貼留言