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+pillow绘制矩阵盖尔圆简单实例
Jan 16 Python
Python三种遍历文件目录的方法实例代码
Jan 19 Python
Python中%是什么意思?python中百分号如何使用?
Mar 20 Python
使用Eclipse如何开发python脚本
Apr 11 Python
python3的print()函数的用法图文讲解
Jul 16 Python
python代码编写计算器小程序
Mar 30 Python
Django框架自定义模型管理器与元选项用法分析
Jul 22 Python
Python Pandas数据中对时间的操作
Jul 30 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
Aug 20 Python
python with (as)语句实例详解
Feb 04 Python
Android Q之气泡弹窗的实现示例
Jun 23 Python
python使用openpyxl库读写Excel表格的方法(增删改查操作)
May 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
Win下如何安装PHP的APC拓展
2013/08/07 PHP
php实现在线生成条形码示例分享(条形码生成器)
2013/12/30 PHP
ThinkPHP关于session的操作方法汇总
2014/07/18 PHP
Codeigniter校验ip地址的方法
2015/03/21 PHP
php实现base64图片上传方式实例代码
2017/02/22 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
jquery 之 $().hover(func1, funct2)使用方法
2012/06/14 Javascript
JS网页在线获取鼠标坐标值的方法
2015/02/28 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
基于JavaScript实现表单密码的隐藏和显示出来
2016/03/02 Javascript
JavaScript数组去重的两种方法推荐
2016/04/05 Javascript
Angular.JS去掉访问路径URL中的#号详解
2017/03/30 Javascript
webpack独立打包和缓存处理详解
2017/04/03 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
Vue自定义指令实现checkbox全选功能的方法
2018/02/28 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
Java及python正则表达式详解
2017/12/27 Python
Python多图片合并PDF的方法
2019/01/03 Python
int在python中的含义以及用法
2019/06/27 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
PyQT5速成教程之Qt Designer介绍与入门
2020/11/02 Python
K近邻法(KNN)相关知识总结以及如何用python实现
2021/01/28 Python
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
优秀通讯员事迹材料
2014/01/28 职场文书
五四演讲稿范文
2014/09/03 职场文书
竞选大队干部演讲稿
2014/09/11 职场文书
对党的十八届四中全会的期盼
2014/10/17 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
如何用Laravel包含你自己的帮助函数
2021/05/27 PHP