使用 Python 和 OpenCV 获取人脸部分并存储
需积分: 0 24 浏览量
更新于2024-08-04
收藏 76KB PDF 举报
Python OpenCV 获取人脸部分并存储功能
在这篇文章中,我们将学习如何使用 Python 和 OpenCV 库来获取人脸部分并将其存储下来。OpenCV 是一个功能强大且广泛使用的计算机视觉库,它提供了许多有用的功能来处理图像和视频。
人脸检测
在这篇代码中,我们使用了 OpenCV 的 CascadeClassifier 来检测人脸。 CascadeClassifier 是一种机器学习算法,可以用来检测图像中的特征。在这里,我们使用了 haarcascade_frontalface_alt.xml 模型来检测人脸。
首先,我们需要导入 OpenCV 库和其他必要的模块:
```python
import cv2
import os
import time
import base64
import numpy as np
```
然后,我们设置了人脸检测模型的路径和其他参数:
```python
faceCascade = cv2.CascadeClassifier('./haarcascade_frontalface_alt.xml')
```
视频捕获
接下来,我们使用 OpenCV 的 VideoCapture 函数来捕获视频流:
```python
cap = cv2.VideoCapture(0)
```
这里的参数 0 表示我们使用的是默认的摄像头。
人脸检测和存储
在循环中,我们读取视频流,转换为灰度图像,并使用 CascadeClassifier 来检测人脸:
```python
while True:
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)
rect = faceCascade.detectMultiScale(gray, scaleFactor=1.3, minNeighbors=9, minSize=(50, 50), flags=cv2.CASCADE_SCALE_IMAGE)
```
如果检测到人脸,我们将其裁剪出来,并将其存储到指定的路径下:
```python
if not rect is ():
for x, y, w, h in rect:
roiImg = frame[y:y+h, x:x+w]
listStr = [str(int(time.time())), str(count)]
fileName = ''.join(listStr)
cv2.imwrite(save_path + os.sep + '%s.jpg' % fileName, roiImg)
```
这里,我们使用了时间戳和计数器来生成唯一的文件名。
显示和退出
最后,我们显示视频流,并等待用户按下 Esc 键退出:
```python
cv2.imshow('opencvCut', frame)
k = cv2.waitKey(30) & 0xff
if k == 27:
break
```
总结
在这篇文章中,我们学习了如何使用 Python 和 OpenCV 库来获取人脸部分并将其存储下来。我们使用了 CascadeClassifier 来检测人脸,并使用 OpenCV 的 VideoCapture 函数来捕获视频流。最后,我们使用了时间戳和计数器来生成唯一的文件名,并将人脸部分存储到指定的路径下。
176 浏览量
2023-04-17 上传
1140 浏览量
182 浏览量
175 浏览量
2024-12-03 上传
133 浏览量
421 浏览量
118 浏览量
程序猿小乙
- 粉丝: 63
最新资源
- ActiveMQ RAR 5.3.1 完整依赖包下载指南
- IPFS与以太坊智能合约文件上传集成指南
- React性能优先的高电压Form组件介绍
- Kotlin多平台库实现跨平台键值对存储解决方案
- myPhoneDesktop Client插件:手机与电脑间的桥梁
- 谷妹社区新版多人视频聊天软件发布
- 18B20温度传感器与数码管显示的51单片机项目教程
- 易语言图标提取工具源码解析与操作
- Raspberry Pi Pinout文档:开源社区与资源共享
- React项目开发指南:构建与部署
- YYCache: 打造iOS平台的极致缓存解决方案
- Torch Sparse 0.6.11版本whl包发布,需配合Torch 1.8.0+cpu使用
- Chrome插件OmniJoin Loader提升会议客户端安装启动体验
- 为Spark应用引入度量管理:spark-metrics库使用教程
- 易语言实现图片合成技术详解
- Bridgy: 实现网站与社交媒体的深度互联