我正在使用Java和JavaCv开发Web face Recognizer应用程序。 拍完照片之后,会生成一个文件.yml / .xml,如下所示:
for (File image : imageFiles) {
Mat img = imread(image.getAbsolutePath(), CV_LOAD_IMAGE_GRAYSCALE);
int label = Integer.parseInt(image.getName().split("\\-")[0]);
String name = image.getName().substring(image.getName().indexOf("-") + 1,
image.getName().indexOf("_"));
images.put(counter, img);
labelsBuf.put(counter, label);
map.put(label, name);
counter++;
}
faceRecognizer.train(images, labels);
faceRecognizer.save("C:/trainingDir/FaceDB.yml");
OpenCv页面和几乎文章显示了存储训练数据的简单方法。问题是你训练的图片越多,它就越大,越不实际。将200mb文件加载到应用程序中进行识别是不可能的。
我正在使用org.bytedeco的javacv 1.2。基本上,我从人那里拍摄了大约30张照片并生成了.yml文件,创建了createEigenFaceRecognizer()
的实例,
加载文件faceRecognizer.load("C:/trainingDir/FaceDB.yml")
,然后执行识别faceRecognizer.predict(testImage)
。
我搜索了很多OpenCv文章,但无法找到任何可行的解决方案。
我如何以及在哪里存储经过培训的数据?是否可以存储在像MySql这样的关系数据库中?或者还有其他选择吗?