/** * {@inheritDoc} * * @see org.openimaj.video.VideoDisplayListener#beforeUpdate(org.openimaj.image.Image) */ @Override public void beforeUpdate(MBFImage frame) { if (edgeDetect) frame.processInplace(new CannyEdgeDetector2()); if (faceDetect) { HaarCascadeDetector d = new HaarCascadeDetector(100); List<DetectedFace> faces = d.detectFaces(Transforms.calculateIntensityNTSC(frame)); for (DetectedFace face : faces) { Shape transBounds = face.getBounds(); MBFImageRenderer renderer = frame.createRenderer(); renderer.drawPolygon(transBounds.asPolygon(), RGBColour.RED); } } if (faceKPDetect) { System.out.println("HERE"); FKEFaceDetector fkp = new FKEFaceDetector(HaarCascadeDetector.BuiltInCascade.frontalface_alt.load()); List<KEDetectedFace> faces = fkp.detectFaces(Transforms.calculateIntensityNTSC(frame)); for (KEDetectedFace face : faces) { Shape transBounds = face.getBounds(); MBFImageRenderer renderer = frame.createRenderer(); renderer.drawPolygon(transBounds.asPolygon(), RGBColour.RED); for (FacialKeypoint kp : face.getKeypoints()) { Point2d pt = kp.position.clone(); pt.translate((float) transBounds.minX(), (float) transBounds.minY()); renderer.drawPoint(pt, RGBColour.GREEN, 3); } } } if (moustache) try { frame.internalAssign(new Mustache().addMustaches(frame)); } catch (IOException e) { e.printStackTrace(); } }