diff --git a/deepface/commons/functions.py b/deepface/commons/functions.py index 65489f4..2abc0c2 100644 --- a/deepface/commons/functions.py +++ b/deepface/commons/functions.py @@ -130,7 +130,12 @@ def preprocess_face(img, target_size=(224, 224), grayscale = False, enforce_dete # img = cv2.resize(img, target_size) #resize causes transformation on base image, adding black pixels to resize will not deform the base image # First resize the longer side to the target size - factor = target_size[0] / max(img.shape) # Suppose target_size[0] == target_size[1]. What if this condition is not satisfied? E.g. DeepID expects 57x47 shaped inputs. + #factor = target_size[0] / max(img.shape) + + 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) @@ -143,6 +148,10 @@ def preprocess_face(img, target_size=(224, 224), grayscale = False, enforce_dete 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) + #--------------------------------------------------- img_pixels = image.img_to_array(img)