【OpenCV】使用opencv找哈士奇的脸
我是一名资深的游戏客户端,没事的时候我喜欢捣鼓点好玩的
2016年,看了下人脸识别,我寻思是不是也能狗脸识别,遂有了这个demo。从有道云把笔记搬过来
OpenCV
用于识别图像,盘它
准备工作
- 安装opencv,配置环境变量,主要是方便在命令行里面运行opencv的exe
- 下载官网的人脸识别例子程序
- 训练哈士奇face分类器
- 替换例子中的文件名为自己需要的,运行
训练分类器
- 正负样本准备
- 训练
我的工程目录结构
1.负样本-bad-放图片
2.正样本-right-放图片
3.data-分类器xml存放目录,不手动新建,会报错
4.target-哈士奇整身图片,用于测试编写的程序识别是否成功
5.bg.dat,告知样本创建程序和训练程序负样本图片的位置
6.info.dat,正样本图片位置,脸的坐标区域
7.pos.vec,运行创建样本命令后,生成的样本描述bg.dat
bad/b (1).jpg
bad/b (2).jpg
bad/b (3).jpg
......info.dat
right/1.jpg 1 0 0 129 142
right/2.jpg 1 0 0 88 94
right/3.jpg 1 0 0 57 76
执行成功的命令行代码
- 创建样本:
opencv_createsamples.exe -vec pos.vec -bg bg.dat -num 3 -w 24 -h 24 -info info.dat
- 训练:
opencv_traincascade.exe -data data -vec pos.vec -bg bg.dat -numPos 3 -numNeg 17 -numStages 3 -precalcValBufSize 32 -precalcIdxBufSize 64 -featureType LBP -w 24 -h 24 -weightTrimRate 0.95 -maxDepth 1
命令行结果
识别结果
如何优化
- 对训练的图片和待识别的图片,预处理,灰度图,模糊,来减少干扰
- 自己编写训练和识别的算法