fasd / DSDG /DUM /make_dataset /crop_dataset.py
ozyman's picture
added dsdg without model file
e437acb
raw
history blame
3.55 kB
import math
import os
import cv2
import numpy as np
root_dir = '/export2/home/wht/oulu_images_crop/'
img_root = '/export2/home/wht/oulu_images/train_img_flod/'
map_root = '/export2/home/wht/oulu_images/train_depth_flod/'
bbox_root = '/export2/home/wht/oulu_images/train_bbox_flod/'
def crop_face_from_scene(image, face_name_full, scale):
f = open(face_name_full, 'r')
lines = f.readlines()
lines = lines[0].split(' ')
y1, x1, w, h = [int(ele) for ele in lines[:4]]
f.close()
y2 = y1 + w
x2 = x1 + h
y_mid = (y1 + y2) / 2.0
x_mid = (x1 + x2) / 2.0
h_img, w_img = image.shape[0], image.shape[1]
# w_img,h_img=image.size
w_scale = scale * w
h_scale = scale * h
y1 = y_mid - w_scale / 2.0
x1 = x_mid - h_scale / 2.0
y2 = y_mid + w_scale / 2.0
x2 = x_mid + h_scale / 2.0
y1 = max(math.floor(y1), 0)
x1 = max(math.floor(x1), 0)
y2 = min(math.floor(y2), w_img)
x2 = min(math.floor(x2), h_img)
# region=image[y1:y2,x1:x2]
region = image[x1:x2, y1:y2]
return region
def crop_face_from_scene_prnet(image, face_name_full, scale):
h_img, w_img = image.shape[0], image.shape[1]
f = open(face_name_full, 'r')
lines = f.readlines()
lines = lines[0].split(' ')
l, r, t, b = [int(ele) for ele in lines[:4]]
if l < 0:
l = 0
if r > w_img:
r = w_img
if t < 0:
t = 0
if b > h_img:
b = h_img
y1 = l
x1 = t
w = r - l
h = b - t
f.close()
y2 = y1 + w
x2 = x1 + h
y_mid = (y1 + y2) / 2.0
x_mid = (x1 + x2) / 2.0
# w_img,h_img=image.size
w_scale = scale * w
h_scale = scale * h
y1 = y_mid - w_scale / 2.0
x1 = x_mid - h_scale / 2.0
y2 = y_mid + w_scale / 2.0
x2 = x_mid + h_scale / 2.0
y1 = max(math.floor(y1), 0)
x1 = max(math.floor(x1), 0)
y2 = min(math.floor(y2), w_img)
x2 = min(math.floor(x2), h_img)
# region=image[y1:y2,x1:x2]
region = image[x1:x2, y1:y2]
return region
vedio_list = os.listdir(bbox_root)
for i, vedio_name in enumerate(vedio_list):
print(i)
bbox_list = os.listdir(os.path.join(bbox_root, vedio_name))
for bbox_name in bbox_list:
face_scale = np.random.randint(12, 15)
face_scale = face_scale / 10.0
# face_scale = 1.3
bbox_path = os.path.join(bbox_root, vedio_name, bbox_name)
img_path = os.path.join(img_root, vedio_name, bbox_name[:-4] + '.jpg')
img = cv2.imread(img_path)
img_crop = cv2.resize(crop_face_from_scene_prnet(img, bbox_path, face_scale), (256, 256))
img_crop_path = os.path.join(root_dir, 'train_img_flod')
if not os.path.exists(os.path.join(img_crop_path, vedio_name)):
os.makedirs(os.path.join(img_crop_path, vedio_name))
cv2.imwrite(os.path.join(img_crop_path, vedio_name, bbox_name[:-4] + '.jpg'), img_crop)
map_path = os.path.join(map_root, vedio_name, bbox_name[:-9] + 'depth1D.jpg')
map = cv2.imread(map_path, 0)
map_crop = cv2.resize(crop_face_from_scene_prnet(map, bbox_path, face_scale), (32, 32))
map_crop_path = os.path.join(root_dir, 'train_depth_flod')
if not os.path.exists(os.path.join(map_crop_path, vedio_name)):
os.makedirs(os.path.join(map_crop_path, vedio_name))
cv2.imwrite(os.path.join(map_crop_path, vedio_name, bbox_name[:-9] + 'depth1D.jpg'), map_crop)