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基于pygame实现的弹力球效果(附源码)
Nov 11 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
Feb 01 Python
pandas创建新Dataframe并添加多行的实例
Apr 08 Python
Python绘制3D图形
May 03 Python
python字符串常用方法
Jun 14 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
基于Django框架利用Ajax实现点赞功能实例代码
Aug 19 Python
python调用虹软2.0第三版的具体使用
Feb 22 Python
django-allauth入门学习和使用详解
Jul 03 Python
详解用python计算阶乘的几种方法
Aug 14 Python
python实现飞机大战游戏(pygame版)
Oct 26 Python
Python os和os.path模块详情
Apr 02 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连接MySQL代码的参数说明
2008/06/07 PHP
php2html php生成静态页函数
2008/12/08 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
PHP简单实现“相关文章推荐”功能的方法
2014/07/19 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
Javascript设置对象的ReadOnly属性(示例代码)
2013/12/25 Javascript
jQuery监听文件上传实现进度条效果的方法
2016/10/16 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
原生js实现可爱糖果数字时间特效
2016/12/30 Javascript
微信小程序左滑删除效果的实现代码
2017/02/20 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
利用JavaScript在网页实现八数码启发式A*算法动画效果
2017/04/16 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
[17:36]VG战队纪录片
2014/08/21 DOTA
python批量下载图片的三种方法
2013/04/22 Python
详解python3百度指数抓取实例
2016/12/12 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
django使用django-apscheduler 实现定时任务的例子
2019/07/20 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
python多进程(加入进程池)操作常见案例
2019/10/21 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
浅析python 通⽤爬⾍和聚焦爬⾍
2020/09/28 Python
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
介绍一下Ruby的特点
2013/01/20 面试题
和平主题的演讲稿
2014/01/12 职场文书
个人投资计划书
2014/05/01 职场文书
服务标语大全
2014/06/18 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
个人学习总结范文
2015/02/15 职场文书
社区工作者个人总结
2015/02/28 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
物业客服专员岗位职责
2015/04/07 职场文书