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使用Image处理图片常用技巧分析
Jun 01 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
python使用筛选法计算小于给定数字的所有素数
Mar 19 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
Jun 19 Python
python读取目录下最新的文件夹方法
Dec 24 Python
Django使用中间键实现csrf认证详解
Jul 22 Python
Python爬虫实现的根据分类爬取豆瓣电影信息功能示例
Sep 15 Python
如何利用pygame实现简单的五子棋游戏
Dec 29 Python
dpn网络的pytorch实现方式
Jan 14 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
Jun 29 Python
在Python 中将类对象序列化为JSON
Apr 06 Python
python创建字典及相关管理操作
Apr 13 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
为查询结果建立向后/向前按钮
2006/10/09 PHP
用PHP和ACCESS写聊天室(六)
2006/10/09 PHP
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
jquery 得到当前页面高度和宽度的两个函数
2010/02/21 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
jquery下div 的resize事件示例代码
2014/03/09 Javascript
详解maxlength属性在textarea里奇怪的表现
2015/12/27 Javascript
JS中创建函数的三种方式及区别
2016/03/13 Javascript
JavaScript实现Base64编码转换
2016/04/23 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
js实现模糊匹配功能
2017/02/15 Javascript
ES6中javascript实现函数绑定及类的事件绑定功能详解
2017/11/08 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
对 Vue-Router 进行单元测试的方法
2018/11/05 Javascript
世界上最短的数字判断js代码
2019/09/09 Javascript
Python Django使用forms来实现评论功能
2016/08/17 Python
Python django实现简单的邮件系统发送邮件功能
2017/07/14 Python
使用Python读取二进制文件的实例讲解
2018/07/09 Python
Python django使用多进程连接mysql错误的解决方法
2018/10/08 Python
python中with用法讲解
2020/02/07 Python
解决pycharm安装第三方库失败的问题
2020/05/09 Python
Python 判断时间是否在时间区间内的实例
2020/05/16 Python
浅析NumPy 切片和索引
2020/09/02 Python
python Scrapy框架原理解析
2021/01/04 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
CHARLES & KEITH台湾官网:新加坡时尚品牌
2019/07/30 全球购物
工作中个人的自我评价
2013/12/31 职场文书
工作会议欢迎词
2014/01/16 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
科技馆观后感
2015/06/08 职场文书
公司团队口号霸气押韵
2015/12/24 职场文书