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 09 Python
Python实现基本数据结构中队列的操作方法示例
Dec 04 Python
使用python生成杨辉三角形的示例代码
Aug 29 Python
python引入不同文件夹下的自定义模块方法
Oct 27 Python
Python实现网站表单提交和模板
Jan 15 Python
python 应用之Pycharm 新建模板默认添加编码格式-作者-时间等信息【推荐】
Jun 17 Python
Django 开发调试工具 Django-debug-toolbar使用详解
Jul 23 Python
python实现的生成word文档功能示例
Aug 23 Python
Python jieba库用法及实例解析
Nov 04 Python
Python进程池Pool应用实例分析
Nov 27 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
Python持续监听文件变化代码实例
Jul 22 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
PHP 生成的XML以FLASH获取为乱码终极解决
2009/08/07 PHP
WampServer下安装多个版本的PHP、mysql、apache图文教程
2015/01/07 PHP
基于PHP的登录和注册的功能的实现
2020/08/06 PHP
javascript 广告后加载,加载完页面再加载广告
2010/11/25 Javascript
onmouseover和onmouseout的一些问题思考
2013/08/14 Javascript
open 动态修改img的onclick事件示例代码
2013/11/13 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
2014/04/02 Javascript
jQuery队列操作方法实例
2014/06/11 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
JS实现图片局部放大或缩小的方法
2016/08/20 Javascript
Bootstrap页面缩小变形的快速解决办法
2017/02/03 Javascript
vue中路由参数传递可能会遇到的坑
2017/12/07 Javascript
解决node修改后需频繁手动重启的问题
2018/05/13 Javascript
vue实现折线图 可按时间查询
2020/08/21 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
连接Python程序与MySQL的教程
2015/04/29 Python
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
python 实现调用子文件下的模块方法
2018/12/07 Python
python TF-IDF算法实现文本关键词提取
2019/05/29 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
Python time库基本使用方法分析
2019/12/13 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
Python定义一个函数的方法
2020/06/15 Python
ddl,dml和dcl的含义
2016/05/08 面试题
教师的实习鉴定
2013/12/15 职场文书
党校培训思想汇报
2014/01/03 职场文书
蔬菜基地的创业计划书
2014/01/06 职场文书
银行介绍信范文
2014/01/10 职场文书
应届生自荐书
2014/06/23 职场文书
建筑节能汇报材料
2014/08/22 职场文书
后备干部推荐材料
2014/12/24 职场文书
统计工作个人总结
2015/03/03 职场文书
张思德观后感
2015/06/09 职场文书
Python3的进程和线程你了解吗
2022/03/16 Python