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 03 Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
python2.x实现人民币转大写人民币
Jun 20 Python
Python3中详解fabfile的编写
Jun 24 Python
python数据归一化及三种方法详解
Aug 06 Python
python+selenium+chromedriver实现爬虫示例代码
Apr 10 Python
python3爬虫中异步协程的用法
Jul 10 Python
Python实现EM算法实例代码
Oct 04 Python
Python爬虫制作翻译程序的示例代码
Feb 22 Python
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
Apr 25 Python
Python selenium绕过webdriver监测执行javascript
Apr 12 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实现的Timer页面运行时间监测类
2014/09/24 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
php自动载入类用法实例分析
2016/06/24 PHP
小议Javascript中的this指针
2010/03/18 Javascript
JQuery 绑定select标签的onchange事件,弹出选择的值,并实现跳转、传参
2011/01/06 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
一个级联菜单代码学习及removeClass与addClass的应用
2013/01/24 Javascript
js中indexof的用法详细解析
2013/12/24 Javascript
window.open 以post方式传递参数示例代码
2014/02/27 Javascript
jQuery中parents()方法用法实例
2015/01/07 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
2018/03/01 Javascript
Spring boot 和Vue开发中CORS跨域问题解决
2018/09/05 Javascript
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
弱类型语言javascript开发中的一些坑实例小结【变量、函数、数组、对象、作用域等】
2019/08/07 Javascript
Python基础之函数用法实例详解
2014/09/10 Python
Python创建文件和追加文件内容实例
2014/10/21 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
python2.7实现爬虫网页数据
2018/05/25 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
python实现Dijkstra静态寻路算法
2019/01/17 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
python输出决策树图形的例子
2019/08/09 Python
python3实现在二叉树中找出和为某一值的所有路径(推荐)
2019/12/26 Python
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
伦敦时尚生活的缩影:LN-CC
2017/01/24 全球购物
荷兰手表网站:Watch2Day
2018/07/02 全球购物
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
青安岗事迹材料
2014/05/14 职场文书
大学毕业生个人自荐书
2014/07/02 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书