Camel OpenIMAJ component can be used to detect faces in images. Camel OpenIMAJ component supports only producer endpoints.
Maven users should add the following dependency to their POM file:
<dependency>
<groupId>io.rhiot</groupId>
<artifactId>camel-openimag</artifactId>
<version>${rhiot.version}</version>
</dependency>
Available for rhiot.version >= 0.1.3
openimaj:label
Where label can be replaced with any text label:
from("webcam:spycam").to("openimaj:face-detection");
This routes the input stream from the webcam to the openimaj component, when a face is detected the resulting body will be an instance of org.openimaj.image.processing.face.detection.DetectedFace, and List when there are multiple faces.
The component uses a face detector based on the Haar cascade by default, optionally set an alternate detector;
from("webcam:spycam").to("openimaj:face-detection?faceDetector=#anotherDetector");
Using the ProducerTemplate, the following example uses the FKEFaceDetector which is a wrapper around the Haar detector, providing additional information by finding facial keypoints on top of the face;
KEDetectedFace face = template.requestBody("openimaj:face-detection?faceDetector=#fkeFaceDetector", inputStream, KEDetectedFace.class);
FacialKeypoint keypoint = face.getKeypoint(FacialKeypoint.FacialKeypointType.EYE_LEFT_LEFT);
The confidence in the face detection is set to the low default of 1, you can set the minimum confidence threshold on the endpoint;
from("webcam:spycam").to("openimaj:face-detection?confidence=50");
| Option | Default value | Description |
|---|---|---|
faceDetector |
new HaarCascadeDetector() |
`org.openimaj.image.processing.face.detection.HaarCascadeDetector' is the default face detector |
confidence |
1 | The minimum confidence of the detection; higher numbers mean higher confidence. |