Java中的图像处理S9(人脸检测)

【Java中的图像处理S9(人脸检测)】在里面入门集在图像处理方面, Java的BufferedImage类用于处理图像, BufferedImage类的应用仅限于某些操作, 即我们可以修改给定输入图像的R, G, B值并生成修改后的图像。对于复杂的图像处理(例如面部/对象检测), 将使用OpenCV库, 我们将在本文中使用它。
首先, 我们需要为Java设置OpenCV, 建议使用蚀相同, 因为它易于使用和设置。
现在, 让我们了解面部检测所需的一些方法。

  1. CascadeClassifier() :此类用于加载经过训练的级联面孔集, 我们将使用它们来检测任何输入图像的面孔。
  2. Imcodecs.imread()/ Imcodecs.imwrite():这些方法用于将图像读取和写入为由OpenCV渲染的Mat对象。
  3. Imgproc.rectangle():用于生成概述检测到的面的矩形框, 它带有四个参数-input_image, top_left_point, bottom_right_point和color_of_border。
//Java program to demonstrate face detection package ocv; 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; public class FaceDetector { 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. //the file can be downloade from //https://github.com/opencv/opencv/blob/master/data/haarcascades/ //haarcascade_frontalface_alt.xml //and must be placed in same directory of the source java file CascadeClassifier faceDetector = new CascadeClassifier(); faceDetector.load( "haarcascade_frontalface_alt.xml" ); //Input image Mat image = Imgcodecs.imread( "E:\\input.jpg" ); //Detecting faces MatOfRect faceDetections = new MatOfRect(); faceDetector.detectMultiScale(image, faceDetections); //Creating a rectangular box showing 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); } }

输出如下:
Input.jpgOutput.jpg

代码说明:
  1. 它加载本机OpenCV库以使用Java API。创建CascadeClassifier的实例, 并向其传递从中加载分类器的文件的名称。
  2. 接下来, 在分类器上使用detectMultiScale方法, 向其传递给定的图像和MatOfRect对象。
  3. MatOfRect负责在处理后进行人脸检测。
  4. 重复此过程以进行所有面部检测并用矩形标记图像, 最后将图像另存为output.png文件。
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

    推荐阅读