File size: 931 Bytes
9ad3152
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from PIL import Image
import numpy as np

def center_crop(image: Image.Image, frac: float = 0.7):
    # crop so that 70% of the image is used
    w, h = image.size
    side = int(min(w, h) * frac)
    side = max(1, min(side, min(w, h)))

    cx = w // 2
    cy = h // 2

    left = cx - side // 2
    upper = cy - side // 2
    right = left + side
    lower = upper + side

    img = image.crop((left, upper, right, lower))
    return img

def preprocess_image(image: Image.Image, img_size: int = 224, fraction: float = 0.7):
    image = center_crop(image, frac=fraction)
    image = image.resize((img_size, img_size), Image.BILINEAR)

    arr = np.array(image).astype("float32") / 255.0

    mean = np.array([0.485, 0.456, 0.406], dtype="float32")
    std = np.array([0.229, 0.224, 0.225], dtype="float32")

    arr = (arr - mean) / std

    arr = np.transpose(arr, (2, 0, 1))
    arr = np.expand_dims(arr, axis=0)
    return arr