C++ 在opencv c+中预构建视频人脸识别处理培训师+;

C++ 在opencv c+中预构建视频人脸识别处理培训师+;,c++,opencv,image-processing,video-processing,face-recognition,C++,Opencv,Image Processing,Video Processing,Face Recognition,目前我正在尝试使用OpenCV和Fisherface算法进行性别识别/分类。目前,我正在用大约2500多张不同照明的图像来训练我的程序 问题是执行文件需要35分钟。每次我执行我的文件,我必须重新训练我的程序。它将处理2500多张图像,在视频人脸识别程序启动前需要35分钟 我的执行线路在终端 ./main haarcascade_frontalface_alt.xml image_to_train.txt 0 ./main将是从Windows中的cpp/.exe生成的对象 haarcascade

目前我正在尝试使用OpenCV和Fisherface算法进行性别识别/分类。目前,我正在用大约2500多张不同照明的图像来训练我的程序

问题是执行文件需要35分钟。每次我执行我的文件,我必须重新训练我的程序。它将处理2500多张图像,在视频人脸识别程序启动前需要35分钟

我的执行线路在终端

./main haarcascade_frontalface_alt.xml image_to_train.txt 0
./main将是从Windows中的cpp/.exe生成的对象

haarcascade_frontalface_alt.xml用于opencv提供的人脸检测

image_to_train.txt是存储2500个图像的位置

0用于网络摄像头

是否有任何方法可以在iamges上预构建.txt文件,这样我就不必每次都重新训练它们。我考虑的是一个数据库,但是一个数据库通常会再次在整个数据库中运行单个图像处理(蛮力概念)

训练程序的代码是整个视频识别过程中的这两行代码。图像被一个接一个地传递到这些函数中,处理了2500个图像,从而缩短了执行时间。查看OpenCV文档,我仍然不知道如何从中提取数据并对其进行处理,从而使执行速度大大加快。预构建执行训练器

  Ptr<FaceRecognizer> model = createFisherFaceRecognizer();
    model->train(images, labels);
Ptr model=createFisherFaceRecognizer();
模型->列车(图像、标签);

我希望能帮助你。我想也许某种可以在内存中存储程序快照的程序或实用程序能够帮助您。在这种情况下,能够加载程序的确切状态并恢复执行将非常有用,而不必经历整个加载过程。是的,ofc。您可以将()保存为xml/yml,然后再次加载(),而不是重新训练。@Cinch在OpenCV中,只有局部二进制模式直方图(Lbph)算法具有此功能。保存并恢复。问题是当我与fisherface交换函数时,网络摄像头开始滞后。网络摄像头保存图片并将其与经过培训的搜索结果进行比较。我怀疑当使用Lbph时,处理需要更长的时间,从而导致一些帧丢失和延迟。这是用800多张图片测试的。3-4分钟的执行时间。@berak我怎么能做到呢?你为什么不看一下?(我为什么要告诉你呢?)