diff --git a/deepface/commons/functions.py b/deepface/commons/functions.py index 025617c..68e834a 100644 --- a/deepface/commons/functions.py +++ b/deepface/commons/functions.py @@ -188,23 +188,26 @@ def preprocess_face(img, target_size=(224, 224), grayscale = False, enforce_dete #resize image to expected shape # img = cv2.resize(img, target_size) #resize causes transformation on base image, adding black pixels to resize will not deform the base image - - factor_0 = target_size[0] / img.shape[0] - factor_1 = target_size[1] / img.shape[1] - factor = min(factor_0, factor_1) - - dsize = (int(img.shape[1] * factor), int(img.shape[0] * factor)) - img = cv2.resize(img, dsize) - - # Then pad the other side to the target size by adding black pixels - diff_0 = target_size[0] - img.shape[0] - diff_1 = target_size[1] - img.shape[1] - if grayscale == False: - # Put the base image in the middle of the padded image - img = np.pad(img, ((diff_0 // 2, diff_0 - diff_0 // 2), (diff_1 // 2, diff_1 - diff_1 // 2), (0, 0)), 'constant') - else: - img = np.pad(img, ((diff_0 // 2, diff_0 - diff_0 // 2), (diff_1 // 2, diff_1 - diff_1 // 2)), 'constant') - + + if img.shape[0] > 0 and img.shape[1] > 0: + factor_0 = target_size[0] / img.shape[0] + factor_1 = target_size[1] / img.shape[1] + factor = min(factor_0, factor_1) + + dsize = (int(img.shape[1] * factor), int(img.shape[0] * factor)) + img = cv2.resize(img, dsize) + + # Then pad the other side to the target size by adding black pixels + diff_0 = target_size[0] - img.shape[0] + diff_1 = target_size[1] - img.shape[1] + if grayscale == False: + # Put the base image in the middle of the padded image + img = np.pad(img, ((diff_0 // 2, diff_0 - diff_0 // 2), (diff_1 // 2, diff_1 - diff_1 // 2), (0, 0)), 'constant') + else: + img = np.pad(img, ((diff_0 // 2, diff_0 - diff_0 // 2), (diff_1 // 2, diff_1 - diff_1 // 2)), 'constant') + + #------------------------------------------ + #double check: if target image is not still the same size with target. if img.shape[0:2] != target_size: img = cv2.resize(img, target_size)