Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

Facial feature detection with OpenCV with eyes and mouth corners points

I'm working on a face feature detection project and I do detect the eyes, nose and mouth using OpenCv withHaarcascade xml files. But, I want to have the eyes and mouth corners points and the nose center. The goal is using it to predict emotions. I found this link that shows how it works, and I need to get to this result using JAVA. Could any one help me?

Thanks in advance.

http://cmp.felk.cvut.cz/~uricamic/flandmark/

in this part we receve the face image and we drawRect on the face:

public void drawFaces(BufferedImage image) {
final List<potentialface> faces = FacialRecognition.run(image, db);
if (faces.isEmpty()) {
return;
}
Graphics2D g2 = image.createGraphics();
g2.setStroke(new BasicStroke(2));
currentFaces.clear();
for (PotentialFace face : faces) {
final Rectangle r = face.box;
final Color c1, c2;
final String msg;
if (face.name == null) {
c1 = c2 = new Color(scale(r.x, getWidth(), 255d), scale(r.y, getHeight(), 255d), 0).brighter();
msg = "Click to tag";
} else {
c1 = new Color(face.name.hashCode()).brighter();
c2 = new Color((int) (c1.getRGB() - 10*face.confidence));
msg = String.format("%s: %f", face.name, face.confidence);
}
g2.setColor(c1);
g2.drawRect(r.x, r.y, r.width, r.height); g2.setColor(c2);
g2.drawString(msg, r.x + 5, r.y - 5);
currentFaces.add(r);
}

click to hide/show revision 2
No.2 Revision

updated 2013-05-29 13:01:55 -0500

berak gravatar image

Facial feature detection with OpenCV with eyes and mouth corners points

I'm working on a face feature detection project and I do detect the eyes, nose and mouth using OpenCv withHaarcascade xml files. But, I want to have the eyes and mouth corners points and the nose center. The goal is using it to predict emotions. I found this link that shows how it works, and I need to get to this result using JAVA. Could any one help me?

Thanks in advance.

http://cmp.felk.cvut.cz/~uricamic/flandmark/

in this part we receve the face image and we drawRect on the face:

 public void drawFaces(BufferedImage image) { 
final List<potentialface> List<PotentialFace> faces = FacialRecognition.run(image, db);
if (faces.isEmpty()) {
return;
}
Graphics2D g2 = image.createGraphics();
g2.setStroke(new BasicStroke(2));
currentFaces.clear();
for (PotentialFace face : faces) {
final Rectangle r = face.box;
final Color c1, c2;
final String msg;
if (face.name == null) {
c1 = c2 = new Color(scale(r.x, getWidth(), 255d), scale(r.y, getHeight(), 255d), 0).brighter();
msg = "Click to tag";
} else {
c1 = new Color(face.name.hashCode()).brighter();
c2 = new Color((int) (c1.getRGB() - 10*face.confidence));
msg = String.format("%s: %f", face.name, face.confidence);
}
g2.setColor(c1);
g2.drawRect(r.x, r.y, r.width, r.height); g2.setColor(c2);
g2.drawString(msg, r.x + 5, r.y - 5);
currentFaces.add(r);
}

}