Created
April 15, 2017 19:53
-
-
Save AaronVigal/713dec7d9d970e14c98df1ffcb9093eb to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 FaceDetection 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); | |
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); | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment