基于javaCV和netbeans的人脸识别
应用程序应该能够使用网络摄像头将图像face_1_01.png、face_1_02.png、face_2_01.png等保存在名为training images的文件夹中,然后,应用程序应该能够循环浏览该文件夹中的所有图像,并识别当前出现在网络摄像头中的人脸,并返回在该人脸上绘制的矩形上方的图像名称 这就是一个例子。不幸的是,视频中的应用程序不是开源的 是下面代码的链接基于javaCV和netbeans的人脸识别,java,image-processing,netbeans,opencv3.0,javacv,Java,Image Processing,Netbeans,Opencv3.0,Javacv,应用程序应该能够使用网络摄像头将图像face_1_01.png、face_1_02.png、face_2_01.png等保存在名为training images的文件夹中,然后,应用程序应该能够循环浏览该文件夹中的所有图像,并识别当前出现在网络摄像头中的人脸,并返回在该人脸上绘制的矩形上方的图像名称 这就是一个例子。不幸的是,视频中的应用程序不是开源的 是下面代码的链接 import com.googlecode.javacv.cpp.opencv_core; import st
import com.googlecode.javacv.cpp.opencv_core;
import static com.googlecode.javacv.cpp.opencv_highgui.*;
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_contrib.*;
import java.io.File;
import java.io.FilenameFilter;
public class OpenCVFaceRecognizer {
public static void main(String[] args) {
String trainingDir = args[0];
IplImage testImage = cvLoadImage(args[1]);
File root = new File(trainingDir);
FilenameFilter pngFilter = new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.toLowerCase().endsWith(".png");
}
};
File[] imageFiles = root.listFiles(pngFilter);
MatVector images = new MatVector(imageFiles.length);
int[] labels = new int[imageFiles.length];
int counter = 0;
int label;
IplImage img;
IplImage grayImg;
for (File image : imageFiles) {
img = cvLoadImage(image.getAbsolutePath());
label = Integer.parseInt(image.getName().split("\\-")[0]);
grayImg = IplImage.create(img.width(), img.height(), IPL_DEPTH_8U, 1);
cvCvtColor(img, grayImg, CV_BGR2GRAY);
images.put(counter, grayImg);
labels[counter] = label;
counter++;
}
IplImage greyTestImage = IplImage.create(testImage.width(), testImage.height(), IPL_DEPTH_8U, 1);
FaceRecognizer faceRecognizer = createFisherFaceRecognizer();
// FaceRecognizer faceRecognizer = createEigenFaceRecognizer();
// FaceRecognizer faceRecognizer = createLBPHFaceRecognizer()
faceRecognizer.train(images, labels);
cvCvtColor(testImage, greyTestImage, CV_BGR2GRAY);
int predictedLabel = faceRecognizer.predict(greyTestImage);
System.out.println("Predicted label: " + predictedLabel);
}
}
我无法确定在何处指定包含所有训练图像的目录的路径名。
String trainingDir=args[0]代码>
程序从第一个命令行参数读取traningDir
您可以通过控制台(即linux中的终端或windows中的DOS)运行,如
java OpenCVFaceRecognizer/path/to/training/Dir
或者在IDE中将/path/to/traning/Dir添加到该项目的“run”参数中。在后一种方式中,您可以单击“运行”按钮执行