工程上为提高人脸识别后期的效率,多采用批处理快速矫正法而不是让图片迭代收敛到矫正状态。
人脸数据库多有成千上万张图片,若图片名不连续,则不能用格式化的路径传入法去批处理,而应采用文件的方法去批处理。
假设要将F:\face_recognition_database\testset路径下的图片批量旋转矫正,处理后的图像再以相同文件名批量存入F:\face_recognition_database\batch_testset文件夹。
1.准备工作:创建待批处理图片文件名的.txt文件
在运行窗口输入cmd打开命令提示符窗口,输入命令行cd F:\face_recognition_database\testset进入到指定目录,再输入F:按回车即可看到当前所在路径,再输入dir /b/s/p/w *.png>inputimage.txt生成包含testset文件夹下所有图片文件名的文本文件(inputimage为该文本文件的文件名),如下图。
2.opencv处理
可以看到.txt中各图片的具体路径中都是单个的反斜杠\,但C++中识别路径时只认双反斜杠\\,故在使用文件时要用string类的find和insert函数作相应处理。本例中以图片中心为旋转中心,所有图片顺时针旋转20度,大小缩放为原来的0.75倍。实际上做人脸矫正时需根据需要旋转不同的角度,设置不同的缩放因子,博主将在后期补上更完善的人脸矫正批处理。为了让读取过程在控制台可见,处理过程中额外添加了cout&#x