generate registered, and frames_file

This commit is contained in:
2022-12-22 23:16:45 +00:00
parent 55be538b6c
commit 70a42c21b5
2 changed files with 63 additions and 3 deletions
+2 -1
View File
@@ -161,4 +161,5 @@ cython_debug/
#.idea/ #.idea/
.vscode/ .vscode/
temp/ temp/
dataset/
+61 -2
View File
@@ -2,10 +2,13 @@ import os
import sys import sys
import numpy as np import numpy as np
import scipy as sp
import scipy.io as sio
from tqdm import tqdm from tqdm import tqdm
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..')
from utils.utils import mask_faces from utils.utils import mask_faces
from superSMPL.IO import readPC2, writePC2
def generate_faces(folder): def generate_faces(folder):
frames = os.listdir(os.path.join(folder, 'mesh_mask')) frames = os.listdir(os.path.join(folder, 'mesh_mask'))
@@ -18,8 +21,64 @@ def generate_faces(folder):
np.save(os.path.join(folder, 'faces', frame), faces) np.save(os.path.join(folder, 'faces', frame), faces)
class Frame:
def __init__(self, id, frame_nr):
self.id = id
self.frame_nr = frame_nr
def generate_frames_file(folder, file_name):
ids = os.listdir(folder)#[:1]
frames = []
for id in tqdm(ids):
garment_dir = os.path.join(folder, id)
if not os.path.isdir(garment_dir):
continue
garments = [f.replace('_registered.pc16','') for f in os.listdir(garment_dir) if f.endswith('_registered.pc16') and not f.startswith('Combined')]
assert len(garments) == 1
garment = garments[0]
verts = readPC2(os.path.join(garment_dir, garment + '_registered.pc16'), True)['V']
for i in range(verts.shape[0]):
frames.append(Frame(id, i))
with open(os.path.join(folder, file_name), 'w') as f:
for i, frame in enumerate(frames):
f.write(str(frame.id) + ' ' + str(frame.frame_nr) + '\n')
def genereated_registered_and_mask(folder, is_skirt = False):
ids = os.listdir(folder)
for id in tqdm(ids):
garment_dir = os.path.join(folder, id)
if not os.path.isdir(garment_dir):
continue
garments = [f.replace('.pc16','') for f in os.listdir(garment_dir) if f.find('_') == -1 and not f.endswith('.mat') and not f.endswith('.obj') and not f.startswith('Combined')]
assert len(garments) == 1
if os.path.exists(os.path.join(garment_dir, garments[0] + '_registered.pc16')):
continue
garment = garments[0]
verts = readPC2(os.path.join(garment_dir, garment + '.pc16'), True)['V']
map = sio.loadmat(os.path.join(garment_dir, garment + '_map.mat'))['map'].reshape((-1))
verts = verts[:, map, :] # ---------------> This is the garment after registration
raw_mask = sio.loadmat(os.path.join(garment_dir, garment + '_mask.mat'))['mask'].reshape((-1))
mask = raw_mask > 0
# boundaries = raw_mask == 2
writePC2(os.path.join(garment_dir, garment + '_registered.pc16'), verts, True)
np.save(os.path.join(garment_dir, garment + '_mask.npy'), mask)
if __name__ == '__main__': if __name__ == '__main__':
# folder = '/home/workspace/local-data/train' # folder = '/home/workspace/local-data/train'
folder = '/home/workspace/local-data/valid' # folder = '/home/workspace/local-data/valid'
folder = 'dataset/CLOTH3D/train'
generate_faces(folder) # generate_faces(folder)
# genereated_registered_and_mask(folder)
generate_frames_file(folder, 'frames_all.txt')