(framestamp, anno_ps, image_base_path, seq, smplx_model, args)
| 152 | return img |
| 153 | |
| 154 | def render_frame(framestamp, anno_ps, image_base_path, seq, smplx_model, args): |
| 155 | annos = [p for p in anno_ps if framestamp in os.path.basename(p)] |
| 156 | annos = [p for p in annos if 'person' not in os.path.basename(p)] |
| 157 | |
| 158 | body_model_params = [] |
| 159 | cameras = [] |
| 160 | bbox_sizes = [] |
| 161 | try: |
| 162 | # image_path = os.path.join(seq, f'0{framestamp}.jpg').replace(args.data_path, args.image_path) |
| 163 | image_path = os.path.join(image_base_path, f'0{framestamp}.jpg') |
| 164 | # pdb.set_trace() |
| 165 | image = cv2.imread(image_path) |
| 166 | except: |
| 167 | |
| 168 | pass |
| 169 | # pdb.set_trace() |
| 170 | for anno_p in annos: |
| 171 | |
| 172 | anno = dict(np.load(anno_p, allow_pickle=True)) |
| 173 | |
| 174 | meta = json.load(open(os.path.join(seq, 'meta', |
| 175 | os.path.basename(anno_p).replace('.npz', '.json') |
| 176 | ))) |
| 177 | |
| 178 | bbox_size = meta['bbox'][2] * meta['bbox'][3] |
| 179 | focal_length = meta['focal'] |
| 180 | principal_point = meta['princpt'] |
| 181 | camera = pyrender.camera.IntrinsicsCamera( |
| 182 | fx=focal_length[0], fy=focal_length[1], |
| 183 | cx=principal_point[0], cy=principal_point[1],) |
| 184 | |
| 185 | # prepare body model params |
| 186 | intersect_key = list(set(anno.keys()) & set(smplx_shape.keys())) |
| 187 | body_model_param_tensor = {key: torch.tensor( |
| 188 | np.array(anno[key]).reshape(smplx_shape[key]), device=args.device, dtype=torch.float32) |
| 189 | for key in intersect_key if len(anno[key]) > 0} |
| 190 | |
| 191 | cameras.append(camera) |
| 192 | body_model_params.append(body_model_param_tensor) |
| 193 | bbox_sizes.append(bbox_size) |
| 194 | |
| 195 | # render pose |
| 196 | if args.render_biggest_person == 'True': |
| 197 | bid = bbox_sizes.index(max(bbox_sizes)) |
| 198 | rendered_image = render_pose(img=image, |
| 199 | body_model_param=body_model_params[bid], |
| 200 | body_model=smplx_model, |
| 201 | camera=cameras[bid]) |
| 202 | else: |
| 203 | rendered_image = render_multi_pose(img=image, |
| 204 | body_model_params=body_model_params, |
| 205 | body_model=smplx_model, |
| 206 | cameras=cameras) |
| 207 | |
| 208 | sp = seq.replace(f'{args.data_path}{os.path.sep}', '') |
| 209 | save_path = os.path.join(args.data_path, 'output', sp) |
| 210 | os.makedirs(save_path, exist_ok=True) |
| 211 |
no test coverage detected