public void changeRecognizer(RecognizerType recognizerType) { if (isRecognizerActive) { changeRecognizerStatus(); recognizerManager.changeRecognizer(RecognizerFactory.getRecognizer(recognizerType)); changeRecognizerStatus(); } else { recognizerManager.changeRecognizer(RecognizerFactory.getRecognizer(recognizerType)); } }
public Mat detect(Mat capturedImage) { List<DetectedElement> detectedElements; // loops over all the activated detectors for (ElementsDetector detector : detectors.values()) { // gets the elements detected by this detector detectedElements = detector.detectElements(capturedImage); for (DetectedElement detectedElement : detectedElements) { // gets the image transformed by the detector capturedImage = detectedElement.getTransformedImage(); // if has to recognize a face if (isRecognizerActive && detectedElement != null && detectedElement.getDetectedImageElement() != null) { assert (detectors.size() == 1 && detectors.containsKey(Constants.DEFAULT_FACE_CLASSIFIER)); // recognizes the face RecognizedFace recognizedFace = recognizerManager.recognizeFace(detectedElement.getDetectedImageElement()); String name; if (recognizedFace == Constants.UNKNOWN_FACE) { name = recognizedFace.getName(); } else { int percentage = (int) (100 * (Constants.FACE_RECOGNITION_THRESHOLD - recognizedFace.getConfidence()) / Constants.FACE_RECOGNITION_THRESHOLD); name = recognizedFace.getName() + " [" + percentage + "%]"; } // writes the name of the recognized person (sort of embossed) Point position = detectedElement.getPosition(); position.y -= 11; position.x -= 1; Imgproc.putText( capturedImage, name, position, Core.FONT_HERSHEY_TRIPLEX, Constants.RECOGNIZED_NAME_FONT_SIZE, Constants.BLACK); position.y += 1; position.x += 1; Imgproc.putText( capturedImage, name, position, Core.FONT_HERSHEY_TRIPLEX, Constants.RECOGNIZED_NAME_FONT_SIZE, colors[2]); } } } return capturedImage; }