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检测lvs real server状态
Jan 22 Python
Python中的赋值、浅拷贝、深拷贝介绍
Mar 09 Python
深入理解NumPy简明教程---数组3(组合)
Dec 17 Python
Python中字典的setdefault()方法教程
Feb 07 Python
pandas把dataframe转成Series,改变列中值的类型方法
Apr 10 Python
python看某个模块的版本方法
Oct 16 Python
设置python3为默认python的方法
Oct 31 Python
python爬取酷狗音乐排行榜
Feb 20 Python
Python当中的array数组对象实例详解
Jun 12 Python
pyinstaller还原python代码过程图解
Jan 08 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
Mar 30 Python
Python PIL按比例裁剪图片
May 11 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 类型转换函数intval
2009/06/20 PHP
关于PHP的curl开启问题探讨
2014/04/08 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
javascript 多浏览器 事件大全
2010/03/23 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
js模拟点击以提交表单为例兼容主流浏览器
2013/11/29 Javascript
Jquery 切换不同图片示例代码
2013/12/05 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
谈谈JavaScript的New关键字
2016/08/26 Javascript
jquery.multiselect多选下拉框实现代码
2016/11/11 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
JS秒杀倒计时功能完整实例【使用jQuery3.1.1】
2019/09/03 jQuery
基于JavaScript实现单例模式
2019/10/30 Javascript
vue实现扫码功能
2020/01/17 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
2020/10/30 Javascript
Python编程argparse入门浅析
2018/02/07 Python
python实现自主查询实时天气
2018/06/22 Python
python实现爬山算法的思路详解
2019/04/09 Python
python树的同构学习笔记
2019/09/14 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
jupyter lab文件导出/下载方式
2020/04/22 Python
python 如何实现遗传算法
2020/09/22 Python
Python 实现3种回归模型(Linear Regression,Lasso,Ridge)的示例
2020/10/15 Python
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
盛大笔试题
2016/11/05 面试题
大专生工程监理求职信
2013/10/04 职场文书
管理失职检讨书
2014/02/12 职场文书
道德模范先进事迹
2014/02/14 职场文书
土建施工员岗位职责
2014/07/16 职场文书
2015年清剿火患专项行动工作总结
2015/07/27 职场文书