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中使用HTMLParser解析html实例
Feb 08 Python
在树莓派2或树莓派B+上安装Python和OpenCV的教程
Mar 30 Python
Python开发的实用计算器完整实例
May 10 Python
python机器学习库常用汇总
Nov 15 Python
python构建深度神经网络(DNN)
Mar 10 Python
使用Numpy读取CSV文件,并进行行列删除的操作方法
Jul 04 Python
python将.ppm格式图片转换成.jpg格式文件的方法
Oct 27 Python
python requests post多层字典的方法
Dec 27 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 Python
Python matplotlib学习笔记之坐标轴范围
Jun 28 Python
python 生成任意形状的凸包图代码
Apr 16 Python
Python基于BeautifulSoup爬取京东商品信息
Jun 01 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 上传文件类型判断函数(避免上传漏洞 )
2010/06/08 PHP
destoon数据库表说明汇总
2014/07/15 PHP
php使用socket post数据到其它web服务器的方法
2015/06/02 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
jquery 选取方法都有哪些
2014/05/18 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
javascript中call()、apply()的区别
2019/03/21 Javascript
JavaScript命令模式原理与用法实例详解
2020/03/10 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
JS PHP字符串截取函数实现原理解析
2020/08/29 Javascript
vue实践---根据不同环境,自动转换请求的url地址操作
2020/09/21 Javascript
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
[44:22]完美世界DOTA2联赛循环赛 FTD vs PXG BO2第一场 11.01
2020/11/02 DOTA
python操作MySQL数据库的方法分享
2012/05/29 Python
django框架之cookie/session的使用示例(小结)
2018/10/15 Python
Python中logging实例讲解
2019/01/17 Python
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
numpy数组广播的机制
2019/07/12 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
django自定义模板标签过程解析
2019/12/14 Python
基于Python3.7.1无法导入Numpy的解决方式
2020/03/09 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
html5 canvas手势解锁源码分享
2020/01/07 HTML / CSS
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
运动会演讲稿
2014/05/07 职场文书
党员教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
Python-OpenCV实现图像缺陷检测的实例
2021/06/11 Python
电频谱管理的原则是什么
2022/02/18 无线电
Redis安装使用RedisJSON模块的方法
2022/03/23 Redis
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis