利用Python实现OpenCV实现人脸检测,废话不多说~
让我们愉快地开始吧~
Python版本: 3.6.4
相关模块:
cv2模块;
以及一些Python自带的模块。
安装Python并添加到环境变量,pip安装需要的相关模块即可。
OpenCV是一个开源、跨平台的计算机视觉库,可以用于各种图像和视频处理操作。
今天就来告诉大家如何通过OpenCV对人脸进行检测
看一下图片检测,原图
训练数据是现成的,利用现成的数据,通过训练进而来检测人脸
具体代码如下
import cv2
# 图片名
filename = 'cxk.png'
def detect(filename):
# cv2级联分类器CascadeClassifier,xml文件为训练数据
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 读取图片
img = cv2.imread(filename)
# 转灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 进行人脸检测
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
# 绘制人脸矩形框
for (x, y, w, h) in faces:
img = cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
# 命名显示窗口
cv2.namedWindow('people')
# 显示图片
cv2.imshow('people', img)
# 保存图片
cv2.imwrite('cxks.png', img)
# 设置显示时间,0表示一直显示
cv2.waitKey(0)
detect(filename)
复制代码
视频用的抖音的上的视频
这里只截取检测效果比较好的视频段作为例子
毕竟训练数据的质量摆在那里,有的时候会出现一些错误
如想提高检测的精度,便需要一个高质量的人脸数据库
具体代码如下
import cv2
def face_rec():
# 加载视频
cameraCapture = cv2.VideoCapture('video.mp4')
# cv2级联分类器CascadeClassifier,xml文件为训练数据
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 读取数据
success, frame = cameraCapture.read()
while success and cv2.waitKey(1) == -1:
# 读取数据
ret, img = cameraCapture.read()
# 进行人脸检测
faces = face_cascade.detectMultiScale(img, 1.3, 5)
# 绘制矩形框
for (x, y, w, h) in faces:
img = cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
# 设置显示窗口
cv2.namedWindow('camera', 0)
cv2.resizeWindow('camera', 840, 480)
# 显示处理后的视频
cv2.imshow('camera', img)
# 读取数据
success, frame = cameraCapture.read()
# 释放视频
cameraCapture.release()
# 释放所有窗口
cv2.destroyAllWindows()
if __name__ == '__main__':
face_rec()
复制代码
结果为视频,这里就不展示了大家可以去网上找下视频做测试就会明白~
有小可爱需要源码或者python相关资料关注我就行后台点击链接找我哦~