Last Updated : 23 Jul, 2025
Prerequisites:
In the Introductory Set on Image Processing, BufferedImage class of Java was used for processing images the applications of BufferedImage class are limited to some operations only, i.e, we can modify the R, G, B values of the given input image and produce the modified image. For complex image processing such as face/object detection, the OpenCV library is used which we will use in this article.
At first, we need to set up OpenCV for Java, we recommend using eclipse for the same since it is easy to use and set up. Now let us understand some of the methods required for face detection.
Implementation:
Note: The front face cascade file can be downloaded from a local git repository.
The input image is as follows:
Example:
Java
// Java Program to Demonstrate Face Detection
// Using OpenCV Library
// Importing package module
package ocv;
// Importing required classes
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
// Main class
// FaceDetector
public class GFG {
// Main driver method
public static void main(String[] args)
{
// For proper execution of native libraries
// Core.NATIVE_LIBRARY_NAME must be loaded before
// calling any of the opencv methods
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// Face detector creation by loading source cascade
// xml file using CascadeClassifier and must be
// placed in same directory of the source java file
// File is available here on git as mentioned above
// prior to code
CascadeClassifier faceDetector
= new CascadeClassifier();
faceDetector.load(
"haarcascade_frontalface_alt.xml");
// Reading the input image
Mat image = Imgcodecs.imread("E:\\input.jpg");
// Detecting faces
MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(image,
faceDetections);
// Creating a rectangular box which represents for
// faces detected
for (Rect rect : faceDetections.toArray()) {
Imgproc.rectangle(
image, new Point(rect.x, rect.y),
new Point(rect.x + rect.width,
rect.y + rect.height),
new Scalar(0, 255, 0));
}
// Saving the output image
String filename = "Ouput.jpg";
Imgcodecs.imwrite("E:\\" + filename, image);
// Display message for successful execution of
// program
System.out.print("Face Detected");
}
}
Output:
Face Detected
The output of the program is shown below my pic before and after face detection
Output Explanation:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4