Opencv Face Detection on Android

 

 

 

{
String sf = "/sdcard/cv/lbpcascade_frontalface.xml";
CascadeClassifier faceDetector = new CascadeClassifier(sf);
String ef = "/sdcard/cv/haarcascade_eye.xml";
CascadeClassifier eyeDetector = new CascadeClassifier(ef);

String mf = "/sdcard/cv/lena.png";
Mat im = Imgcodecs.imread(mf);
MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(im, faceDetections);

/*
Rect[] facesArray = faceDetections.toArray();
for(int i = 0; i < facesArray.length; i++) {

}
*/

Mat faceROI = null;

for(Rect rect:faceDetections.toArray()){
MatOfRect eyeDetections = new MatOfRect();
faceROI = im.submat(rect);
eyeDetector.detectMultiScale(faceROI, eyeDetections);
Rect[] eyesArray = eyeDetections.toArray();
for(Rect erect:eyeDetections.toArray()) {
Imgproc.rectangle(faceROI, new Point(erect.x, erect.y), new Point(erect.x + erect.width,erect.y + erect.width), new Scalar(0,0,255),2);
}
Imgproc.rectangle(im, new Point(rect.x,rect.y), new Point(rect.x+rect.width,rect.y+rect.width), new Scalar(0,0,255),2);
}

Imgcodecs.imwrite("/sdcard/cv/rectlena.png", im);
Imgcodecs.imwrite("/sdcard/cv/rectlenaeyes.png", faceROI);

}

posted on 2018-04-13 09:48  fanbird2008  阅读(240)  评论(0)    收藏  举报

导航