利用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() 复制代码
结果为视频,这里就不展示了大家可以去网上找下视频做测试就会明白~
源码分享查看下图知识哦
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)