Rumah  >  Artikel  >  Java  >  Teknologi pengesanan dan pengecaman muka dilaksanakan menggunakan Java

Teknologi pengesanan dan pengecaman muka dilaksanakan menggunakan Java

WBOY
WBOYasal
2023-06-18 09:08:122503semak imbas

Dengan perkembangan berterusan teknologi kecerdasan buatan, teknologi pengesanan dan pengecaman muka telah digunakan secara meluas dalam kehidupan seharian. Teknologi pengesanan dan pengecaman muka digunakan secara meluas dalam pelbagai keadaan, seperti sistem kawalan akses muka, sistem pembayaran muka, enjin carian muka, dsb. Sebagai bahasa pengaturcaraan yang digunakan secara meluas, Java juga boleh melaksanakan teknologi pengesanan dan pengecaman muka. Artikel ini akan memperkenalkan cara menggunakan Java untuk melaksanakan teknologi pengesanan dan pengecaman muka.

1. Teknologi pengesanan muka

Teknologi pengesanan muka merujuk kepada teknologi yang mengesan wajah dalam imej atau video. Di Java, anda boleh menggunakan OpenCV, perpustakaan penglihatan komputer sumber terbuka, untuk melaksanakan teknologi pengesanan muka. OpenCV ialah perpustakaan penglihatan komputer merentas platform dengan kelebihan kecekapan, kemudahan penggunaan dan kebolehskalaan.

Berikut ialah langkah asas untuk melaksanakan teknologi pengesanan muka dalam Java menggunakan OpenCV:

  1. Import perpustakaan OpenCV: Anda boleh menggunakan Maven atau memuat turunnya secara manual untuk mengimport perpustakaan OpenCV.
  2. Muat pengelas Haar: Pengelas Haar ialah pengelas berasaskan ciri yang biasa digunakan untuk mengesan wajah. Di Java, model pengelas Haar boleh dimuatkan menggunakan kelas CascadeClassifier.
  3. Memuatkan imej: Anda boleh menggunakan kelas Imgcodecs untuk memuatkan fail imej atau kelas VideoCapture untuk memuatkan strim video.
  4. Kesan muka: Gunakan kaedah detectMultiScale dalam kelas CascadeClassifier untuk mengesan wajah Kaedah ini akan mengembalikan kedudukan dan saiz muka dalam imej.
  5. Lukis hasil pengesanan: Gunakan kaedah segi empat tepat dalam kelas Imgproc untuk melukis kedudukan muka yang dikesan dalam imej.

Berikut ialah contoh kod yang menggunakan OpenCV untuk melaksanakan pengesanan muka dalam Java:

import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;

public class FaceDetector {
    public static void main(String[] args) {
        // Load OpenCV library
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

        // Load Haar classifier
        CascadeClassifier faceDetector = new CascadeClassifier("path/to/haarcascade_frontalface_default.xml");

        // Load image
        Mat image = Imgcodecs.imread("path/to/image.jpg");

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

        // Draw rectangles around detected faces
        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, 0, 255), 2);
        }

        // Save image with detected faces
        Imgcodecs.imwrite("path/to/result.jpg", image);
    }
}

Dalam kod di atas, kelas OpenCV Core, Imgcodecs, Imgproc dan CascadeClassifier digunakan. Antaranya, kelas CascadeClassifier memuatkan model pengelas Haar, manakala kelas Imgcodecs dan Imgproc digunakan untuk memuatkan imej dan melukis hasil pengesanan. Gunakan kod ini untuk mengesan dan mencari wajah dalam imej.

2. Teknologi pengecaman muka

Teknologi pengecaman muka merujuk kepada membandingkan muka input dengan muka dalam pangkalan data muka apabila pangkalan data wajah diketahui, dan Teknik untuk mencari wajah yang serupa dengan mereka. Di Java, anda boleh menggunakan kelas FaceRecognizer untuk pengecaman muka. FaceRecognizer ialah kelas yang digunakan khusus untuk pengecaman muka dalam OpenCV Ia merangkumi beberapa algoritma pengecaman, seperti Eigenfaces, Fisherfaces, LBPH, dsb.

Berikut ialah langkah asas untuk melaksanakan teknologi pengecaman muka di Java menggunakan FaceRecognizer:

  1. Memuatkan pustaka muka: Anda boleh menggunakan kelas Imgcodecs untuk memuatkan imej muka dalam pustaka muka .
  2. Ekstrak ciri muka: Gunakan kaedah kereta api dalam kelas FaceRecognizer untuk melatih semua muka dalam pangkalan data wajah untuk menjana ciri wajah.
  3. Pengecaman muka: Gunakan kaedah ramalan dalam kelas FaceRecognizer untuk mengecam muka input, dan hasil pengecaman ialah persamaan dan pengecam.
  4. Paparkan hasil pengecaman: Anda boleh menggunakan kelas Imgproc untuk melukis hasil pengecaman dalam imej.

Berikut ialah contoh kod yang menggunakan FaceRecognizer untuk melaksanakan pengecaman muka dalam Java:

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;
import org.opencv.face.FaceRecognizer;
import org.opencv.face.LBPHFaceRecognizer;

public class FaceRecognizer {
    public static void main(String[] args) {
        // Load OpenCV library
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

        // Load Haar classifier
        CascadeClassifier faceDetector = new CascadeClassifier("path/to/haarcascade_frontalface_default.xml");

        // Load face recognizer
        FaceRecognizer recognizer = LBPHFaceRecognizer.create();

        // Load all images from the directory
        for (int i = 1; i <= 10; i++) {
            String fileName = "path/to/database/" + i + ".jpg";
            Mat image = Imgcodecs.imread(fileName);

            // Convert image to grayscale
            Imgproc.cvtColor(image, image, Imgproc.COLOR_BGR2GRAY);

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

            // Extract face features
            Mat face = new Mat();
            face = image.submat(faceDetections.toArray()[0]);
            recognizer.train(face, new Mat());
        }

        // Load input image
        Mat inputImage = Imgcodecs.imread("path/to/input/image.jpg");
        Imgproc.cvtColor(inputImage, inputImage, Imgproc.COLOR_BGR2GRAY);

        // Detect face
        MatOfRect faceDetections = new MatOfRect();
        faceDetector.detectMultiScale(inputImage, faceDetections);

        // Recognize face
        Mat inputFace = new Mat();
        inputFace = inputImage.submat(faceDetections.toArray()[0]);
        int[] label = new int[1];
        double[] confidence = new double[1];
        recognizer.predict(inputFace, label, confidence);

        // Draw rectangle and name of recognized person
        Imgproc.rectangle(inputImage, faceDetections.toArray()[0].tl(),
                faceDetections.toArray()[0].br(), new Scalar(0, 0, 255), 2);
        Imgproc.putText(inputImage, "Person " + label[0], faceDetections.toArray()[0].tl(),
                Imgproc.FONT_HERSHEY_PLAIN, 1, new Scalar(0, 255, 0), 2);

        // Show and save result
        Imgcodecs.imwrite("path/to/result.jpg", inputImage);
    }
}

Dalam kod di atas, pengelas Haar mula-mula digunakan untuk mengesan wajah dan mengekstraknya daripada pangkalan data muka Muatkan imej muka untuk latihan dan jana ciri muka. Kemudian, masukkan imej untuk dikenali, ekstrak wajah yang muncul di dalamnya dan gunakan kelas FaceRecognizer untuk mengecamnya. Akhir sekali, hasil pengesanan dan pengecaman diplot dalam imej menggunakan kelas Imgproc. Sistem pengecaman muka mudah boleh dilaksanakan menggunakan kod ini.

Ringkasan

Artikel ini memperkenalkan cara menggunakan Java untuk melaksanakan teknologi pengesanan dan pengecaman muka. Bagi pembangun Java, menguasai teknologi ini boleh melaksanakan aplikasi berasaskan muka, seperti sistem kawalan akses muka, sistem pembayaran muka, enjin carian muka, dsb. Walaupun perpustakaan OpenCV digunakan dalam kod sampel, terdapat banyak perpustakaan penglihatan komputer yang serupa, seperti JavaCV, BoofCV, dll. Pembaca yang berminat boleh cuba menggunakan perpustakaan ini untuk melaksanakan teknologi pengesanan dan pengecaman muka.

Atas ialah kandungan terperinci Teknologi pengesanan dan pengecaman muka dilaksanakan menggunakan Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn