openbjk.detectar.java Source code

Java tutorial

Introduction

Here is the source code for openbjk.detectar.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package openbjk;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import org.opencv.core.Core;
import org.opencv.core.MatOfRect;
import org.opencv.highgui.Highgui;
import org.opencv.objdetect.CascadeClassifier;
import org.opencv.core.Mat;
import org.opencv.core.MatOfByte;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;

/**
 *
 * @author Gertrude
 */
public class detectar {

    public void run(Canvas c, Mat image) throws IOException {
        System.out.println("Rodando DetectFace");

        CascadeClassifier faceDetector = new CascadeClassifier(
                "C:\\Users\\Gertrude\\Documents\\NetBeansProjects\\TCC-FacialRecognize\\src\\resources\\lbpcascade_frontalface.xml");
        //Mat image = Highgui.imread("C:/Users/Gertrude/Desktop/TCC/img/lena.png");

        MatOfRect faceDetections = new MatOfRect();
        faceDetector.detectMultiScale(image, faceDetections);

        System.out.printf("Detected %s faces", faceDetections.toArray().length);

        for (Rect rect : faceDetections.toArray()) {
            Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height),
                    new Scalar(0, 255, 0));
        }

        String filename = "C:/Users/DS-007/Pictures/faceDetection.png";

        System.out.println(String.format("Writing %s", filename));
        Highgui.imwrite(filename, image);

        int type = BufferedImage.TYPE_BYTE_GRAY;

        MatOfByte bytemat = new MatOfByte();
        Highgui.imencode(".png", image, bytemat);
        byte[] bytes = bytemat.toArray();
        InputStream in = new ByteArrayInputStream(bytes);

        BufferedImage render = ImageIO.read(in);
        // c.setSize(render.getWidth(), render.getHeight());     
        Graphics g = c.getGraphics();

        g.drawImage(render, 1, 1, c.getHeight(), c.getWidth(), Color.LIGHT_GRAY, c);

    }
}