Convert opencv calibration smpl poses&transl parameters to model based poses&transl or verts. Args: R (Union[np.ndarray, torch.Tensor]): (frame, 3, 3) T (Union[np.ndarray, torch.Tensor]): [(frame, 3) K (Optional[Union[np.ndarray, torch.Tensor]], optional):
(
R: Union[np.ndarray, torch.Tensor],
T: Union[np.ndarray, torch.Tensor],
K: Optional[Union[np.ndarray, torch.Tensor]] = None,
resolution: Optional[Union[Iterable[int], int]] = None,
verts: Optional[Union[np.ndarray, torch.Tensor]] = None,
poses: Optional[Union[np.ndarray, torch.Tensor]] = None,
transl: Optional[Union[np.ndarray, torch.Tensor]] = None,
model_path: Optional[str] = None,
betas: Optional[Union[np.ndarray, torch.Tensor]] = None,
model_type: Optional[str] = 'smpl',
gender: Optional[str] = 'neutral')
| 18 | |
| 19 | |
| 20 | def convert_smpl_from_opencv_calibration( |
| 21 | R: Union[np.ndarray, torch.Tensor], |
| 22 | T: Union[np.ndarray, torch.Tensor], |
| 23 | K: Optional[Union[np.ndarray, torch.Tensor]] = None, |
| 24 | resolution: Optional[Union[Iterable[int], int]] = None, |
| 25 | verts: Optional[Union[np.ndarray, torch.Tensor]] = None, |
| 26 | poses: Optional[Union[np.ndarray, torch.Tensor]] = None, |
| 27 | transl: Optional[Union[np.ndarray, torch.Tensor]] = None, |
| 28 | model_path: Optional[str] = None, |
| 29 | betas: Optional[Union[np.ndarray, torch.Tensor]] = None, |
| 30 | model_type: Optional[str] = 'smpl', |
| 31 | gender: Optional[str] = 'neutral'): |
| 32 | """Convert opencv calibration smpl poses&transl parameters to model based |
| 33 | poses&transl or verts. |
| 34 | |
| 35 | Args: |
| 36 | R (Union[np.ndarray, torch.Tensor]): (frame, 3, 3) |
| 37 | T (Union[np.ndarray, torch.Tensor]): [(frame, 3) |
| 38 | K (Optional[Union[np.ndarray, torch.Tensor]], optional): |
| 39 | (frame, 3, 3) or (frame, 4, 4). Defaults to None. |
| 40 | resolution (Optional[Union[Iterable[int], int]], optional): |
| 41 | (height, width). Defaults to None. |
| 42 | verts (Optional[Union[np.ndarray, torch.Tensor]], optional): |
| 43 | (frame, num_verts, 3). Defaults to None. |
| 44 | poses (Optional[Union[np.ndarray, torch.Tensor]], optional): |
| 45 | (frame, 72/165). Defaults to None. |
| 46 | transl (Optional[Union[np.ndarray, torch.Tensor]], optional): |
| 47 | (frame, 3). Defaults to None. |
| 48 | model_path (Optional[str], optional): model path. |
| 49 | Defaults to None. |
| 50 | betas (Optional[Union[np.ndarray, torch.Tensor]], optional): |
| 51 | (frame, 10). Defaults to None. |
| 52 | model_type (Optional[str], optional): choose in 'smpl' or 'smplx'. |
| 53 | Defaults to 'smpl'. |
| 54 | gender (Optional[str], optional): choose in 'male', 'female', |
| 55 | 'neutral'. |
| 56 | Defaults to 'neutral'. |
| 57 | |
| 58 | Raises: |
| 59 | ValueError: wrong input poses or transl. |
| 60 | |
| 61 | Returns: |
| 62 | Tuple[torch.Tensor]: Return converted poses, transl, pred_cam |
| 63 | or verts, pred_cam. |
| 64 | """ |
| 65 | R_, T_ = convert_world_view(R, T) |
| 66 | |
| 67 | RT = torch.eye(4, 4)[None] |
| 68 | RT[:, :3, :3] = R_ |
| 69 | RT[:, :3, 3] = T_ |
| 70 | |
| 71 | if verts is not None: |
| 72 | poses = None |
| 73 | betas = None |
| 74 | transl = None |
| 75 | else: |
| 76 | assert poses is not None |
| 77 | assert transl is not None |
nothing calls this directly
no test coverage detected