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实现保证只能运行一个脚本实例
Jun 24 Python
分析用Python脚本关闭文件操作的机制
Jun 28 Python
Python实现把json格式转换成文本或sql文件
Jul 10 Python
pycharm 批量修改变量名称的方法
Aug 01 Python
Python计算不规则图形面积算法实现解析
Nov 22 Python
使用Python进行防病毒免杀解析
Dec 13 Python
关于windows下Tensorflow和pytorch安装教程
Feb 04 Python
Pycharm+Python工程,引用子模块的实现
Mar 09 Python
python使用nibabel和sitk读取保存nii.gz文件实例
Jul 01 Python
pytorch中[..., 0]的用法说明
May 20 Python
pytorch 如何把图像数据集进行划分成train,test和val
May 31 Python
python三子棋游戏
May 04 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
解析php5配置使用pdo
2013/07/03 PHP
Joomla数据库操作之JFactory::getDBO用法
2016/05/05 PHP
PHP+Ajax实现验证码的实时验证
2016/07/20 PHP
JSON辅助格式化处理方法
2013/03/26 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
jQuery简单入门示例之用户校验demo示例
2016/07/09 Javascript
jQuery使用deferreds串行多个ajax请求
2016/08/22 Javascript
浅谈jQuery为哪般去掉了浏览器检测
2016/08/29 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
JS正则匹配中文的方法示例
2017/01/06 Javascript
node学习记录之搭建web服务器教程
2017/02/16 Javascript
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
Python中使用urllib2防止302跳转的代码例子
2014/07/07 Python
Python中字符串对齐方法介绍
2015/05/21 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
俄罗斯最大的灯具网站:Fandeco
2020/03/14 全球购物
python re模块和正则表达式
2021/03/24 Python
应届生简历中的自我评价
2014/01/13 职场文书
门卫岗位职责说明书
2014/08/18 职场文书
给老婆的检讨书
2015/01/27 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
计划生育个人总结
2015/03/02 职场文书
年会主持人开场白台词
2015/05/29 职场文书
2019年最新借条范本!
2019/07/08 职场文书
导游词之上海东方明珠塔
2019/09/25 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript