有没有找项目的网站,网站建设的品牌,ppt做会动彩字网站,获取网站访问量Python中使用opencv-python进行人脸检测
之前写过一篇VC中使用OpenCV进行人脸检测的博客。以数字图像处理中经常使用的lena图像为例#xff0c;如下图所示#xff1a;
使用OpenCV进行人脸检测十分简单#xff0c;OpenCV官网给了一个Python人脸检测的示例程序#xff0c;…Python中使用opencv-python进行人脸检测
之前写过一篇VC中使用OpenCV进行人脸检测的博客。以数字图像处理中经常使用的lena图像为例如下图所示
使用OpenCV进行人脸检测十分简单OpenCV官网给了一个Python人脸检测的示例程序 objectDetection.py代码如下
from __future__ import print_function
import cv2 as cv
import argparsedef detectAndDisplay(frame):frame_gray cv.cvtColor(frame, cv.COLOR_BGR2GRAY)frame_gray cv.equalizeHist(frame_gray)#-- Detect facesfaces face_cascade.detectMultiScale(frame_gray)for (x,y,w,h) in faces:center (x w//2, y h//2)frame cv.ellipse(frame, center, (w//2, h//2), 0, 0, 360, (255, 0, 255), 4)faceROI frame_gray[y:yh,x:xw]#-- In each face, detect eyeseyes eyes_cascade.detectMultiScale(faceROI)for (x2,y2,w2,h2) in eyes:eye_center (x x2 w2//2, y y2 h2//2)radius int(round((w2 h2)*0.25))frame cv.circle(frame, eye_center, radius, (255, 0, 0 ), 4)cv.imshow(Capture - Face detection, frame)parser argparse.ArgumentParser(descriptionCode for Cascade Classifier tutorial.)
parser.add_argument(--face_cascade, helpPath to face cascade., defaultdata/haarcascades/haarcascade_frontalface_alt.xml)
parser.add_argument(--eyes_cascade, helpPath to eyes cascade., defaultdata/haarcascades/haarcascade_eye_tree_eyeglasses.xml)
parser.add_argument(--camera, helpCamera divide number., typeint, default0)
args parser.parse_args()face_cascade_name args.face_cascade
eyes_cascade_name args.eyes_cascadeface_cascade cv.CascadeClassifier()
eyes_cascade cv.CascadeClassifier()#-- 1. Load the cascades
if not face_cascade.load(cv.samples.findFile(face_cascade_name)):print(--(!)Error loading face cascade)exit(0)
if not eyes_cascade.load(cv.samples.findFile(eyes_cascade_name)):print(--(!)Error loading eyes cascade)exit(0)camera_device args.camera
#-- 2. Read the video stream
cap cv.VideoCapture(camera_device)
if not cap.isOpened:print(--(!)Error opening video capture)exit(0)while True:ret, frame cap.read()if frame is None:print(--(!) No captured frame -- Break!)breakdetectAndDisplay(frame)if cv.waitKey(10) 27:break所在目录为D:\env_build\opencv4.9.0\opencv\sources\samples\python\tutorial_code\objectDetection\cascade_classifier\objectDetection.py
人脸识别的背景
人脸识别可以用在身份认证门禁等场合中可以通过训练大量的人脸数据获取人脸的特征。但是实际场景可以比较复杂由于灯光、视角、视距、摄像头抖动以及数字噪声的变化图像细节变得不稳定还有戴了口罩、帽子之后对于人脸的检测就变得更麻烦了。Haar 特征是一种用于实现实时人脸跟踪的特征。每一个 Haar 特征都描述了相邻图像区域的对比模式。例如边顶点和细线都能生成具有判别性的特征。
haar级联数据获取
在 sources 的一个文件夹 data/haarcascades。该文件夹包含了所有 OpenCV 的人脸检测的 XML 文件这些可用于检测静止图像、视频和摄像头所得到图像中的人脸。如下图所示
人脸检测器默认haarcascade_frontalface_default.xml人脸检测器快速 Harrhaarcascade_frontalface_alt2.xml人脸检测器侧视haarcascade_profileface.xml眼部检测器左眼haarcascade_lefteye_2splits.xml眼部检测器右眼haarcascade_righteye_2splits.xml身体检测器haarcascade_fullbody.xml上半身检测器haarcascade_upperbody.xml 其中本文中我们使用默认的人脸检测器xml配置文件haarcascade_frontalface_default.xml 可以从https://github.com/murtazahassan/Learn-OpenCV-in-3-hours/blob/master/Resources/haarcascade_frontalface_default.xml处下载
资源图片地址
人脸资源图片地址为https://github.com/murtazahassan/Learn-OpenCV-in-3-hours/blob/master/Resources/lena.png
Python中使用opencv-python库进行人脸检测示例代码
示例代码如下所示
import cv2faceCascade cv2.CascadeClassifier(Resources/haarcascade_frontalface_default.xml)
img cv2.imread(Resources/lena.png)
imgGray cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)faces faceCascade.detectMultiScale(imgGray, 1.1, 4)for (x, y, w, h) in faces:cv2.rectangle(img, (x, y), (x w, y h), (255, 0, 0), 2)cv2.imshow(Result, img)
cv2.waitKey(0)运行结果如下图所示
使用OpenCV官方的python人脸检测示例代码进行实时人脸和眼睛检测
opencv4.9.0\opencv\sources\samples\python\tutorial_code\objectDetection\cascade_classifier\objectDetection.py修改后的示例代码如下
from __future__ import print_function
import cv2 as cv
import argparsedef detectAndDisplay(frame):frame_gray cv.cvtColor(frame, cv.COLOR_BGR2GRAY)frame_gray cv.equalizeHist(frame_gray)#-- Detect facesfaces face_cascade.detectMultiScale(frame_gray)for (x,y,w,h) in faces:center (x w//2, y h//2)frame cv.ellipse(frame, center, (w//2, h//2), 0, 0, 360, (255, 0, 255), 4)faceROI frame_gray[y:yh,x:xw]#-- In each face, detect eyeseyes eyes_cascade.detectMultiScale(faceROI)for (x2,y2,w2,h2) in eyes:eye_center (x x2 w2//2, y y2 h2//2)radius int(round((w2 h2)*0.25))frame cv.circle(frame, eye_center, radius, (255, 0, 0 ), 4)cv.imshow(Capture - Face detection, frame)face_cascade_name data/haarcascades/haarcascade_frontalface_alt.xml
eyes_cascade_name data/haarcascades/haarcascade_eye_tree_eyeglasses.xmlface_cascade cv.CascadeClassifier()
eyes_cascade cv.CascadeClassifier()#-- 1. Load the cascades
if not face_cascade.load(cv.samples.findFile(face_cascade_name)):print(--(!)Error loading face cascade)exit(0)
if not eyes_cascade.load(cv.samples.findFile(eyes_cascade_name)):print(--(!)Error loading eyes cascade)exit(0)camera_device 0
#-- 2. Read the video stream
cap cv.VideoCapture(camera_device)
if not cap.isOpened:print(--(!)Error opening video capture)exit(0)while True:ret, frame cap.read()if frame is None:print(--(!) No captured frame -- Break!)breakdetectAndDisplay(frame)if cv.waitKey(10) 27:break上述代码从摄像头实时采集数据使用haar级联人脸正面和眼睛的训练测试结果xml配置文件对采集到的每一帧图像进行人脸和眼睛的检测并做椭圆标记如下图所示
参考资料
人脸识别-Haar级联人脸识别-多张人脸检测LEARN OPENCV in 3 HOURS with Python | Including 3xProjects | Computer VisionLearn-OpenCV-in-3-hoursLEARN OPENCV C in 4 HOURS | Including 3x Projects | Computer Visionmurtazahassan/Learn-OpenCV-cpp-in-4-HoursOpenCV官网OpenCV-Get StartedOpenCV Github仓库源代码OpenCV tutorial