code: def test_project(self, num_points, device, dtype):
      intrinsics, _, world_points, img_points = self._get_test_data(
          num_points, device, dtype
      )
  
      pred_world_to_cam = kornia.geometry.solve_pnp_dlt(
          world_points, img_points, intrinsics
      )
  
      pred_world_to_cam_4x4 = kornia.eye_like(4, pred_world_to_cam)
      pred_world_to_cam_4x4[:, :3, :] = pred_world_to_cam
  
      repeated_intrinsics = intrinsics.unsqueeze(1).repeat(
          1, num_points, 1, 1
      )
      pred_img_points = self._project_to_image(
          world_points, pred_world_to_cam_4x4, repeated_intrinsics
      )
  
      assert_close(pred_img_points, img_points, atol=1e-3, rtol=1e-3)
  
file_path: kornia/test/geometry/calibration/test_pnp.py
imports: import pytest
  import torch
  from torch.autograd import gradcheck
  import kornia
  from kornia.geometry.calibration.pnp import _mean_isotropic_scale_normalize
  from kornia.testing import assert_close, tensor_to_gradcheck_var
label_desc: Use image node_id 8 for calling the TestSolvePnpDlt obj's underlying member method code with example usage: obj.test_project(num_points, device, dtype) without return types