MCPcopy Create free account
hub / github.com/MotrixLab/ADHMR / render_frame

Function render_frame

HMR-Scorer/main/render.py:154–213  ·  view source on GitHub ↗
(framestamp, anno_ps, image_base_path, seq, smplx_model, args)

Source from the content-addressed store, hash-verified

152 return img
153
154def 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

Callers 1

call_frame_renderFunction · 0.85

Calls 4

render_poseFunction · 0.85
render_multi_poseFunction · 0.85
loadMethod · 0.45
keysMethod · 0.45

Tested by

no test coverage detected