介绍
我试图自动将动漫角色识别为一种爱好,但是很难从原始图像中切出面孔进行学习。
手动执行需要花费时间,但如果是自动识别,则会检测到错误,因此
在中间,我在自动识别的帮助下做了半自动的东西,所以我将其发布。
我已将其发布在Github上,因此,如果您喜欢它,请随时煮沸或烘烤。
它带有英语说明。
https://github.com/YankeeDeltaBravo225/AnimeFaceExtractHelper
也许有人已经做过,但是我可能是唯一写过详细用法的人了?
来自下图
仅切出像这样的脸部。
所有用于说明的图像均来自girlysozai.com。
制备
您需要以下内容:
Python3
我认为使用Anaconda是安全的。
参考:
使用Anaconda
安装Python环境
开启CV
参考:
[Python]将OpenCV与Python结合使用(基本)
lbpcascade_animeface
https://github.com/nagadomi/lbpcascade_animeface
下载后,将其放在脚本所在的目录中。
如何使用
第一个参数是包含原始图像的目录,第二个参数是输出目标目录。
如果没有输出目标目录,请创建它。
请注意,如果该文件已经存在,它将被覆盖。
1 | python AnimeFaceExtractHelper.py <input directory> <output directory> |
执行此操作时,对于原始图像目录中的每个图像,
使用lbpcascade_animeface执行面部检测,结果显示在白色框中。
蓝框是当前选定的区域,如果要选择其他区域,请使用键盘上的向右或向左键进行切换。
按下
Enter键以剪切蓝框中的区域,将其保存,然后进入下一张图像。
如果按ESC键,则将直接保存到下一张图像。
关键代码定义如下,但是根据环境的不同,可能会有所不同,因此请进行相应的调整。
1 2 3 4 | KEY_ENTER = 0xD KEY_ESC = 0x1B KEY_L_ARROW = 0x250000 KEY_R_ARROW = 0x270000 |
如果通过lbpcascade_animeface进行的检测失败,则上述白色和蓝色框将不会出现,如下所示。
在这种情况下,请通过鼠标输入进行选择。
即使检测成功,也可以通过鼠标输入来更改范围。
如果输入范围不是正方形,则在此状态下按Enter键,框将显示为红色,并且不会保存。
调整区域使其成为正方形,框架将变为蓝色。
在此状态下,按Enter键将保存蓝框。
参考文献
我提到了以下内容。
[初学者说明] OpenCV人脸检测机制和实践(检测MultiScale)
使用OpenCV3和Python3进行对象跟踪(通过Lucas-Kanade方法由鼠标指定跟踪特征点)