data_util.py
1.19 KB
import cv2
import numpy as np
import base64
from skimage import transform as trans
def base64_to_img(imgBase64):
img_b64decode = base64.b64decode(imgBase64)
img_array = np.fromstring(img_b64decode, np.uint8)
ori_image = cv2.imdecode(img_array, cv2.IMREAD_COLOR)
return ori_image
def preprocess(image, landmarks):
src = np.array([[38.2946, 51.6963],
[73.5318, 51.6963],
[56.0252, 71.7366],
[41.5493, 92.3655],
[70.7299, 92.3655] ], dtype=np.float32)
landmarks = np.array(landmarks)
dst = landmarks.astype(np.float32)
tform = trans.SimilarityTransform()
tform.estimate(dst, src)
M = tform.params[0:2,:]
warped = cv2.warpAffine(image, M, (112, 112), borderValue=0.0)
return warped
def get_norm_face(image, landmarks):
norm_image = preprocess(image, landmarks)
# norm_image = cv2.cvtColor(norm_image, cv2.COLOR_BGR2RGB).astype(np.float32)
# norm_image = cv2.resize(norm_image, (112, 112))
# norm_image = norm_image.transpose((2, 0, 1))
# norm_image = norm_image.transpose((1,2,0))
# norm_image = cv2.resize(norm_image, (112, 112))[:,:,::-1]
return norm_image