Python OpenCV利用笔记本摄像头实现人脸检测


Posted in Python onAugust 20, 2020

本文实例为大家分享了Python OpenCV利用笔记本摄像头实现人脸检测的具体代码,供大家参考,具体内容如下

1.安装opencv

首先参考其他文章安装pip。

之后以管理员身份运行命令提示符,输入以下代码安装opencv

pip install --user opencv-python

可以使用以下代码测试安装是否成功

#导入opencv模块
import cv2
#捕捉帧,笔记本摄像头设置为0即可
capture = cv2.VideoCapture(0)
#循环显示帧
while(True):
 ret, frame = capture.read()
 #显示窗口第一个参数是窗口名,第二个参数是内容
 cv2.imshow('frame', frame)
 if cv2.waitKey(1) == ord('q'):#按Q退出
 break

Python OpenCV利用笔记本摄像头实现人脸检测

2.实现简单的人脸识别

在win10及python3.6.6环境下代码如下

import cv2
import numpy as np
face_cascade = cv2.CascadeClassifier("C:\ProgramData\Anaconda3\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml")
eye_cascade = cv2.CascadeClassifier("C:\ProgramData\Anaconda3\Lib\site-packages\cv2\data\haarcascade_eye.xml")
cap=cv2.VideoCapture(0)
 
while True:
 ret,img=cap.read()
 gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
 faces = face_cascade.detectMultiScale(gray,1.1,5)
 if len(faces)>0:
 for faceRect in faces:
 x,y,w,h = faceRect
 cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
 roi_gray = gray[y:y+h//2,x:x+w]
 roi_color = img[y:y+h//2,x:x+w]
 eyes = eye_cascade.detectMultiScale(roi_gray,1.1,1,cv2.CASCADE_SCALE_IMAGE,(2,2))
 for (ex,ey,ew,eh) in eyes:
 cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
 cv2.imshow("img",img)
 if cv2.waitKey(1) & 0xFF == ord('q'):
 break

注意数据集haarcascade_frontalface_default.xml,haarcascade_eye.xml一定要采用绝对路径,否则容易出错,具体的位置可以用搜索得到。

结果如下

Python OpenCV利用笔记本摄像头实现人脸检测

Ubuntu下的opencv安装方法与win10类似,先安装pip,再在终端中输入下面代码安装即可,这样安装的是python2的版本

pip install --user opencv-python

若要安装python3的版本,请先安装pip3,然后在终端输入以下代码:

pip3 install --user opencv-python

另外如果是用虚拟机运行的Ubuntu的话,是直接驱动笔记本的摄像头的,如果用的是VirtualBox虚拟机则可以在官网下载扩展包安装即可。

Ubuntu下实现人脸识别的代码与win10类似,只是需要注意数据集的绝对路径,可以根据以下代码来查询:

sudo find / -iname "*haarcascade_frontalface_default.xml*"

两个数据集是在同一个文件夹下的,最后我的代码如下

import cv2
import numpy as np
face_cascade = cv2.CascadeClassifier("/home/yukino/.local/lib/python2.7/site-packages/cv2/data/haarcascade_frontalface_default.xml")
eye_cascade = cv2.CascadeClassifier("/home/yukino/.local/lib/python2.7/site-packages/cv2/data/haarcascade_eye.xml")
cap=cv2.VideoCapture(0)
 
while True:
 ret,img=cap.read()
 gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
 faces = face_cascade.detectMultiScale(gray,1.1,5)
 if len(faces)>0:
 for faceRect in faces:
 x,y,w,h = faceRect
 cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
 roi_gray = gray[y:y+h//2,x:x+w]
 roi_color = img[y:y+h//2,x:x+w]
 eyes = eye_cascade.detectMultiScale(roi_gray,1.1,1,cv2.CASCADE_SCALE_IMAGE,(2,2))
 for (ex,ey,ew,eh) in eyes:
 cv2.rectangle(roi_color,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
 cv2.imshow("img",img)
 if cv2.waitKey(1) & 0xFF == ord('q'):
 break

最后运行结果如下:

Python OpenCV利用笔记本摄像头实现人脸检测

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python文件特定行插入和替换实例详解
Jul 12 Python
python pandas 组内排序、单组排序、标号的实例
Apr 12 Python
python批量替换多文件字符串问题详解
Apr 22 Python
numpy判断数值类型、过滤出数值型数据的方法
Jun 09 Python
python通过paramiko复制远程文件及文件目录到本地
Apr 30 Python
Python正则表达式匹配数字和小数的方法
Jul 03 Python
python下载库的步骤方法
Oct 12 Python
pytorch 图像中的数据预处理和批标准化实例
Jan 15 Python
解决Django中checkbox复选框的传值问题
Mar 31 Python
Django使用Profile扩展User模块方式
May 14 Python
Python中常见的数制转换有哪些
May 27 Python
Python批量将csv文件转化成xml文件的实例
May 10 Python
python使用KNN算法识别手写数字
Apr 25 #Python
Python3.5运算符操作实例详解
Apr 25 #Python
Python对象转换为json的方法步骤
Apr 25 #Python
Python+PyQt5实现美剧爬虫可视工具的方法
Apr 25 #Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
Apr 25 #Python
Python基础教程之if判断,while循环,循环嵌套
Apr 25 #Python
python3通过selenium爬虫获取到dj商品的实例代码
Apr 25 #Python
You might like
德生PL330的评价与改造
2021/03/02 无线电
一个显示天气预报的程序
2006/10/09 PHP
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
2008/03/28 PHP
php zlib压缩和解压缩swf文件的代码
2008/12/30 PHP
PHP开启gzip页面压缩实例代码
2010/03/11 PHP
linux实现php定时执行cron任务详解
2013/12/24 PHP
php图片合成方法(多张图片合成一张)
2017/11/25 PHP
6个DIV 135或246间隔一秒轮番显示效果
2010/07/24 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
JavaScript实现将UPC转换成ISBN的方法
2015/05/26 Javascript
js实现select下拉框菜单
2015/12/08 Javascript
微信小程序 教程之条件渲染
2016/10/18 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
layer.close()关闭进度条和Iframe窗的方法
2018/08/17 Javascript
JavaScript多种滤镜算法实现代码实例
2019/12/10 Javascript
详解ES6 CLASS在微信小程序中的应用实例
2020/04/24 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
Python 含参构造函数实例详解
2017/05/25 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
python求最大连续子数组的和
2018/07/07 Python
Python的UTC时间转换讲解
2019/02/26 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
css3的transition属性详解
2014/12/15 HTML / CSS
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
动态密码技术
2012/10/18 面试题
商务日语专业毕业生求职信
2013/10/26 职场文书
优秀的毕业生的自我评价
2013/12/12 职场文书
三好学生自我鉴定
2013/12/17 职场文书
会计系个人求职信范文分享
2013/12/20 职场文书
劳动竞赛口号
2014/06/16 职场文书
2015年行政助理工作总结
2015/04/30 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
解析:创业计划书和商业计划书二者之间到底有什么区别
2019/08/14 职场文书