用PYTHON、opencv写一个将相册中不同人物的照片进行分别保存的程序
时间: 2024-03-05 12:51:28 浏览: 20
好的,这个问题可以通过使用 Python 的图像处理库 OpenCV 来实现。以下是一个简单的程序框架:
```python
import cv2
import os
# 加载相册中的所有照片
photos = []
for file_name in os.listdir("album"):
if file_name.endswith(".jpg") or file_name.endswith(".png"):
image = cv2.imread("album/" + file_name)
photos.append(image)
# 加载人脸识别器
face_cascade = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
# 用字典记录每个人物的照片
people_photos = {}
# 遍历每张照片,识别其中的人物,并将照片保存到对应的文件夹中
for photo in photos:
# 将照片转换为灰度图像
gray = cv2.cvtColor(photo, cv2.COLOR_BGR2GRAY)
# 使用人脸识别算法识别照片中的人物
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
# 遍历每个人物的人脸,将照片保存到对应的文件夹中
for (x, y, w, h) in faces:
face = photo[y:y+h, x:x+w]
name = recognize_name(face)
if name not in people_photos:
os.makedirs(name)
people_photos[name] = []
people_photos[name].append(photo)
cv2.imwrite(name + "/" + str(len(people_photos[name])) + ".jpg", face)
# 打印每个人物的照片数量
for name, photos in people_photos.items():
print(name, len(photos))
```
这个程序会遍历相册中的所有照片,识别其中的人物,并将照片保存到对应的文件夹中。在保存照片时,我们可以将文件名命名为每个人物的照片数量,这样可以避免文件名重复的问题。
需要注意的是,这个程序的人脸识别算法需要根据具体的情况进行修改,例如可以使用 OpenCV 中的人脸识别算法。同时,程序还需要处理一些异常情况,例如相册中没有照片或者照片无法识别出人物等情况。