为什么我会得到一个NoneType?

时间:2020-11-08 21:12:04

标签: python python-imaging-library cv2

有人可以看到我要去哪里了吗?我一直在逐行处理它,直到new_face开始产生NoneType时,所有这些都会产生预期的结果。

import numpy, cv2
from PIL import Image

face_cascade = cv2.CascadeClassifier("..data/haarcascade_frontalface_default.xml") #absolute path cut down for privacy

def find_faces(image_for_faces):
    image = image_for_faces.resize((1800,3150))
    image_np = numpy.asarray(image)
    image_gray = cv2.cvtColor(image_np, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(image_gray) #correct numpy array, prints correct coordinates per face
    face_list = []
    image.show()
    for face in faces:
        print(face)
        box = (face[0], face[1], face[0]+face[2], face[1]+face[3]) #correctly produces numpy coordinates
        copy_image = image.copy()
        cropped = copy_image.crop(box = (box))
        new_face = cropped.thumbnail((128,128))
        face_list.append(new_face)
    return face_list

y = Image.open('famphoto.jpg')
z = y.convert('RGB')
x = find_faces(z)

1 个答案:

答案 0 :(得分:2)

Image.thumbnail()在适当位置修改Image对象,在docs中详细了解它。它提到它返回None类型。

Image.thumbnail:

将此图像制作为缩略图。此方法将图像修改为 包含本身的缩略图版本,不大于给定的大小。 此方法计算适当的缩略图大小以保留 图像的方面,调用draft()方法来配置文件 阅读器(如果适用),最后调整图像大小。

相关问题