OpenCV实现动态人脸识别
前面我们讲了使用opencv打开图片这节我们讲怎么识别图片中的人脸。
我们的主要思想是以下这几部。
1、导入库–2、加载图片–3、加载人脸模型-4、调整图片灰度-5、检查人脸-6、标记人脸-7、创建窗口–8、显示图片–9、暂停窗口–10、关闭窗口。
这里需要的人脸模型可以点击这里下载。提取码:vmch 且把人脸模型放在python项目下。
下面我们就实际操作一下。
下面是源码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # 导入库 import cv2 # 加载图片 img = cv2.imread('TEXT.jpg') # 加载人脸模型 face = cv2.CascadeClassifier("haarcascade_frontalface_alt.xml") # 调整图片灰度 gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) # 检查人脸 faces = face.detectMultiScale(gray) # 标记人脸 for (x, y, w, h) in faces: # 里面有四个参数1,写图片,2,写坐标原点,3,识别大小 4颜色 5线宽 cv2.rectangle(img, (x, y) ,(x+w, y+h),(0, 255, 0), 2) # 创建窗口 cv2.namedWindow('taoshukai zuishuai') # 显示窗口 cv2.imshow('taoshukai',img) # 暂停窗口 cv2.waitKey(0) # 关闭窗口 cv2.destroyAllWindows() |
这是我们最终实现的效果:
上面调用的一些方法我们需要给大家解释一下。
1、解释一下我们为什么要把图片和人脸模型文件放在python工作区间下。
答:路径在python里面分为:相对路径(python文件下),绝对路径(告诉源文件的准确位置)我一般用第一个,因为绝对路径我一般容易错。
2、什么是人脸模型?
答:这是一些前辈和大佬对人脸数据进行采集生成的一个xml文件,opencv技术比较成熟所以人脸识别已经发展很久了,有些数据不需要我们在人为的进行采集了。
3、什么是图像的灰度?
答:我们都知道图片的色彩都是由GPU合成然后在通过显示器呈现给我们的。为了使程序的性能较高,我们采用图像灰度处理(其实就是黑白化了)。
4、标记人脸是怎么实现的?
我们通过rectangle这个方法来进行,标记里面的参数我们在注释中一一有解释。可以通过help(rectangle)查看函数的使用方法。