Frame frame = new Frame.Builder().setBitmap(bitmap).build(); SparseArray<Face> faces = safeDetector.detect(frame);
/** * Calculates a point (focus point) in the bitmap, around which cropping needs to be performed. * * @param bitmap Bitmap in which faces are to be detected. * @param centerOfAllFaces To store the center point. */ private void detectFace(Bitmap bitmap, PointF centerOfAllFaces) { FaceDetector faceDetector = GlideFaceDetector.getFaceDetector(); if (!faceDetector.isOperational()) { centerOfAllFaces.set(bitmap.getWidth() / 2, bitmap.getHeight() / 2); // center crop return; } Frame frame = new Frame.Builder().setBitmap(bitmap).build(); SparseArray<Face> faces = faceDetector.detect(frame); final int totalFaces = faces.size(); if (totalFaces > 0) { float sumX = 0f; float sumY = 0f; for (int i = 0; i < totalFaces; i++) { PointF faceCenter = new PointF(); getFaceCenter(faces.get(faces.keyAt(i)), faceCenter); sumX = sumX + faceCenter.x; sumY = sumY + faceCenter.y; } centerOfAllFaces.set(sumX / totalFaces, sumY / totalFaces); return; } centerOfAllFaces.set(bitmap.getWidth() / 2, bitmap.getHeight() / 2); // center crop }
/** * Calculates a point (focus point) in the bitmap, around which cropping needs to be performed. * * @param bitmap Bitmap in which faces are to be detected. * @param centerOfAllFaces To store the center point. */ private void detectFace(Bitmap bitmap, PointF centerOfAllFaces) { FaceDetector faceDetector = PicassoFaceDetector.getFaceDetector(); if (!faceDetector.isOperational()) { centerOfAllFaces.set(bitmap.getWidth() / 2, bitmap.getHeight() / 2); // center crop return; } Frame frame = new Frame.Builder().setBitmap(bitmap).build(); SparseArray<Face> faces = faceDetector.detect(frame); final int totalFaces = faces.size(); if (totalFaces > 0) { float sumX = 0f; float sumY = 0f; for (int i = 0; i < totalFaces; i++) { PointF faceCenter = new PointF(); getFaceCenter(faces.get(faces.keyAt(i)), faceCenter); sumX = sumX + faceCenter.x; sumY = sumY + faceCenter.y; } centerOfAllFaces.set(sumX / totalFaces, sumY / totalFaces); return; } centerOfAllFaces.set(bitmap.getWidth() / 2, bitmap.getHeight() / 2); // center crop }
Frame frame = new Frame.Builder().setBitmap(bitmap).build(); SparseArray<TextBlock> origTextBlocks = textRecognizer.detect(frame); List<TextBlock> textBlocks = new ArrayList<>();
public void setBitmap( Bitmap bitmap ) { mBitmap = bitmap; FaceDetector detector = new FaceDetector.Builder( getContext() ) .setTrackingEnabled(true) .setLandmarkType(FaceDetector.ALL_LANDMARKS) .setMode(FaceDetector.ACCURATE_MODE) .build(); if (!detector.isOperational()) { //Handle contingency } else { Frame frame = new Frame.Builder().setBitmap(bitmap).build(); mFaces = detector.detect(frame); detector.release(); } logFaceData(); invalidate(); }