"""
参数说明:
southPath:存放图像的文件目录
objectPath:裁剪后的图像保存的目录
*suffix:图像的格式
"""
def readPicSaveFace(sourcePath, objectPath, *suffix):
try:
# 读取照片,注意第一个元素是文件名
resultArray = readAllImg(sourcePath, *suffix)
# print(resultArray)
# 对list中图片逐一进行检查,找出其中的人脸然后写到目标文件夹下
count = 1
face_cascade = cv2.CascadeClassifier(
'G:\ProgramData\Anaconda\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml'
)
for i in resultArray:
if type(i) != str:
# gray = cv2.cvtColor(i, cv2.COLOR_BGR2GRAY)
# 保留这行代码可以实现裁剪出的人脸是灰度图的,否则裁剪出的图像是三通道的彩图
faces = face_cascade.detectMultiScale(i, 1.3, 5)
print(faces)
for (x, y, w, h) in faces:
listStr = [str(int(time.time())), str(count)] # 以时间戳和读取的排序作为文件名称
fileName = ''.join(listStr)
f = cv2.resize(i[y:(y + h), x:(x + w)], (200, 200))
print(f)
cv2.imwrite(objectPath + os.sep + '%s.jpg' % fileName, f)
count += 1
except IOError:
print("Error")
else:
print('Already read ' + str(count - 1) + ' Faces to Destination ' + objectPath)
利用OpenCV获取人脸。
效果:
原图像
裁剪后的效果: