用python框出文件夹中的所有图片中的人脸并且保存(不用dlib库)并且完整写下来
时间: 2024-03-25 12:39:25 浏览: 26
要实现这个功能,可以继续使用Python的OpenCV库,以下是实现步骤:
1. 安装OpenCV库
使用pip命令安装OpenCV库:
```
pip install opencv-python
```
2. 导入库
在Python代码中导入OpenCV库:
```python
import cv2
import os
```
3. 加载图片
使用OpenCV加载图片:
```python
img = cv2.imread('your_image.jpg')
```
4. 加载人脸检测器
使用OpenCV提供的人脸检测器:
```python
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
```
5. 检测人脸
使用人脸检测器检测图片中的人脸:
```python
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
```
6. 框出人脸并保存
遍历检测到的人脸,并在图片中框出人脸:
```python
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
crop_img = img[y:y+h, x:x+w]
cv2.imwrite('face_{}.jpg'.format(counter), crop_img)
counter += 1
```
在上述代码中,我们使用了cv2.rectangle函数框出人脸,并使用cv2.imwrite函数保存人脸图片。
7. 遍历文件夹中的所有图片
使用os库中的os.listdir函数遍历文件夹中的所有图片,并对每张图片执行上述操作。
完整代码如下:
```python
import cv2
import os
# 加载人脸检测器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 遍历文件夹中的所有图片
for filename in os.listdir('/path/to/folder'):
# 确保文件是图片
if filename.endswith('.jpg') or filename.endswith('.jpeg') or filename.endswith('.png'):
# 加载图片
img = cv2.imread(os.path.join('/path/to/folder', filename))
# 检测人脸
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
# 遍历检测到的人脸,并在图片中框出人脸
counter = 1
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
crop_img = img[y:y+h, x:x+w]
cv2.imwrite('face_{}_{}.jpg'.format(os.path.splitext(filename)[0], counter), crop_img)
counter += 1
# 保存图片
cv2.imwrite(os.path.join('/path/to/output/folder', filename), img)
```
在上述代码中,我们使用了os.path.join函数拼接文件路径,使用os.path.splitext函数获取文件名和扩展名,使用cv2.imwrite函数保存图片。同时,我们也将框出人脸后的图片保存在另一个文件夹中。
注:为了提高检测精度,建议对每张图片进行人脸对齐处理再进行人脸检测。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)