使用python 以及opencv检测人脸
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用python 以及opencv检测人脸,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3494字,纯文字阅读大概需要5分钟。
内容图文
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、人脸检测的源代码,可以检测出人脸,并可以保存视频,以及保存人脸图片。
#coding = utf-8
#pip install opencv-python
import cv2
import numpy as np
#打开电脑摄像头
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')
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]
#将人脸图片保存到文件
cv2.imwrite('./test.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检测人脸全部内容,希望文章能够帮你解决使用python 以及opencv检测人脸所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。