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:
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:
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!