Python OpenCV调用笔记本摄像头实现人脸与眼睛检测

咖啡半糖
咖啡半糖
发布时间:2026-10-14| 5人浏览过
原创

本文详解如何使用Python OpenCV调用笔记本摄像头进行人脸及眼睛检测。涵盖Win10与Ubuntu系统下的OpenCV安装步骤,重点解析haarcascade数据集绝对路径配置方法,并提供完整的Python检测代码与运行结果展示,帮助开发者快速实现基础视觉识别功能。

OpenCV摄像头人脸检测概述

本文分享利用Python OpenCV调用笔记本摄像头进行人脸检测的具体实现方案,供读者参考。

OpenCV环境安装配置

第一步:安装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

Windows系统人脸检测实现

第二步:实现基础人脸识别

在Windows 10及Python 3.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必须使用绝对路径,否则易导致错误。具体路径可通过系统搜索功能获取。

运行效果如下所示:

Ubuntu系统配置与代码实现

Ubuntu系统下的OpenCV安装流程与Win10类似,先确保pip已安装,然后在终端执行相应代码即可。此方式默认安装的是Python 2版本。


pip install --user opencv-python

若需安装Python 3版本,请先安装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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。