使用python 以及opencv检测人脸
1、人脸检测需要使用开源的opencv计算机视觉软件包 opencv-4.1.0-vc14_vc15.exe。
下载opencv, windows版,并安装,参见网址:https://opencv.org/releases/ 。opencv是一个开源的计算机视觉和机器学习的软件包。软件包有2500多种优化算法,其中包括一套综合的经典和最先进的计算机视觉和机器学习算法。这些算法可用于检测和识别人脸、识别对象、对视频中的人类行为进行分类、跟踪摄像机运动、跟踪移动对象、提取对象的三维模型、从立体摄像机生成三维点云、将图像拼接在一起以生成高分辨率的图像。轮胎场景,从图像数据库中找到相似的图像,从使用闪光灯拍摄的图像中去除红眼,跟踪眼球运动,识别风景并建立标记以增强现实感等。
OpenCV拥有超过4.7万用户社区和估计的下载数量。超过1800万。该软件包在公司、研究团体和政府机构中被广泛使用。 除了像google、yahoo、microsoft、intel、ibm、sony、honda、toyota这样的知名公司,还有许多初创公司,如applied minds、videosurf和zeitera,它们广泛使用opencv。
OpenCV的部署应用范围包括将街景图像拼接在一起、检测以色列监控视频中的入侵、监测中国的矿山设备、帮助机器人在柳树车库导航和拾起物体、检测欧洲游泳池溺水事故、跑步等。西班牙和纽约的互动艺术,检查土耳其跑道上的碎片,检查世界各地工厂产品的标签,以快速检测日本的人脸。
它具有C++、Python、Java和Matlab接口,支持Windows、Linux、Android和Mac OS。OpenCV主要面向实时视觉应用程序,并在可用时利用MMX和SSE指令。一个功能齐全的CUDAandOpenCL接口正在积极开发中。有500多个算法和大约10倍的函数组成或支持这些算法。OpenCV是用C++编写的,它有一个模板化的接口,它与STL容器无缝连接。
2、我们使用python语言,需要下载并使用pip命令安装opencv(opencv的python接口): opencv_python-4.1.0.25-cp37-cp37m-win_amd64.whl,参见网址:https://pypi.org/project/opencv-python/,分CPU和GPU版本。
3、人脸检测的源代码,可以检测出人脸,并可以保存视频,以及保存人脸图片(每10帧保存一张)。
#coding = utf-8
#pip install opencv-python
import cv2
import numpy as np
import datetime
#打开电脑摄像头
cv2.namedWindow('Dace_Detect')
cap = cv2.VideoCapture(0)
success,frame = cap.read()
#打开视频文件,准备保存视频
fourcc = cv2.VideoWriter_fourcc(*'XVID')
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
out = cv2.VideoWriter('./camera_test.avi', fourcc,10.0, size)
#选择人脸检测分类器,位于opencv安装目录下。
classifier = cv2.CascadeClassifier('C:/open-cv/opencv/sources/data/haarcascades/haarcascade_frontalface_alt.xml')
#每隔10帧保存一张图片
ff = 10
while success:
size = frame.shape[:2]
image = np.zeros(size,dtype=np.float16 )
image = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
cv2.equalizeHist(image,image)
divisor = 8
h,w = size
minSize =(int(w/divisor),int(h/divisor))
faceRects = classifier.detectMultiScale(image,1.2,2,cv2.CASCADE_SCALE_IMAGE,minSize)
if len(faceRects) > 0:
for faceRect in faceRects:
x,y,w,h = faceRect
roiImg = frame[y:y+h,x:x+w]
if ff%10 == 0:
fn = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
#将人脸图片保存到文件
cv2.imwrite('./img/'+fn+'.jpg',roiImg)
cv2.circle(frame,(x+w//2,y+h//2),min(w//2,h//2),(255,0,0),2)
#cv2.circle(frame,(x+w//4,y+2*h//5),min(w//8,h//8),(0,255,0),2) #左眼轮廓
#cv2.circle(frame,(x+3*w//4,y+2*h//5),min(w//8,h//8),(0,255,0),2)#右眼轮廓
#cv2.circle(frame,(x+w//2,y+2*h//3),min(w//8,h//8),(0,255,0),2) #鼻子轮廓
cv2.rectangle(frame, (x, y), (x+w, y+h), (0,0,255),2) #矩形轮廓
cv2.imshow('Face_Detect',frame)
success,frame = cap.read()
#写入视频文件
out.write(frame)
#按control + C 键退出
key=cv2.waitKey(10)
c = chr(key&255)
if c in ['q','Q',chr(27)]:
break
cap.release()
out.release()
cv2.destroyAllWindows()
- 【Python】使用openCV与dlib实现人脸68特征点的检测与手动修改
- 使用python-opencv人脸检测,画框,添加字符函数
- 结合OpenCV摄像头使用Dlib库进行人脸检测及标注特征点和提取人脸特征-Python
- python中使用OpenCV进行人脸检测的例子
- 使用OpenCV+PCA+KNN/SVM进行人脸检测和识别-Python
- 使用OpenCV调用摄像头检测人脸并截图-Python
- python中使用OpenCV进行人脸检测的例子
- python OpenCv 人脸检测
- python结合opencv实现人脸检测与跟踪
- 使用Android NDK编译OpenCV应用r人脸检测
- python+OpenCV进行人脸检测
- Python_人脸检测 (dlib库检测与opencv检测效果对比 含代码)
- 【Python+OpenCV】实现检测场景内是否有物体移动,并进行人脸检测抓拍
- OpenCV 人脸检测自学(5)_如何使用opencv_traincascade
- python结合opencv实现人脸检测与跟踪
- Opencv使用级联分类器进行人脸检测
- Python-OpenCV人脸检测(代码)
- Python利用OpenCV实现人脸检测
- as中opencv的使用 人脸检测
- Python2.7+Opencv 人脸检测