def test_points_model_4_points(): points = np.zeros((4, 3), dtype=np.float) points[1][0] = 1 points[2][1] = 1 points[3][2] = 1 colours = np.zeros((4, 3), dtype=np.byte) colours[1][0] = 255 colours[2][1] = 255 colours[3][2] = 255 vtk_model = pm.VTKPointModel(points, colours) assert vtk_model.get_point_size() == 5 assert vtk_model.get_number_of_points() == 4
def test_point_set_overlay(vtk_overlay_with_gradient_image): image, widget, _, app = vtk_overlay_with_gradient_image points = np.zeros((4, 3), dtype=np.float) points[1][0] = 1 points[2][1] = 1 points[3][2] = 1 colours = np.zeros((4, 3), dtype=np.byte) colours[0][0] = 255 colours[0][1] = 255 colours[0][2] = 255 colours[1][0] = 255 colours[2][1] = 255 colours[3][2] = 255 vtk_models = [pm.VTKPointModel(points, colours)] widget.add_vtk_models(vtk_models)
def test_stereo_overlay_window(vtk_interlaced_stereo_window): widget, _, app = vtk_interlaced_stereo_window model_points_file = 'tests/data/calibration/chessboard_14_10_3_no_ID.txt' model_points = np.loadtxt(model_points_file) number_model_points = model_points.shape[0] assert number_model_points == 140 # Load images left_image = cv2.imread('tests/data/calibration/left-1095-undistorted.png') right_image = cv2.imread('tests/data/calibration/right-1095-undistorted.png') # Load left intrinsics for projection matrix. left_intrinsics_file = 'tests/data/calibration/calib.left.intrinsic.txt' left_intrinsics = np.loadtxt(left_intrinsics_file) # Load right intrinsics for projection matrix. right_intrinsics_file = 'tests/data/calibration/calib.right.intrinsic.txt' right_intrinsics = np.loadtxt(right_intrinsics_file) # Load 2D points image_points_file ='tests/data/calibration/right-1095-undistorted.png.points.txt' image_points = np.loadtxt(image_points_file) number_image_points = image_points.shape[0] assert number_model_points == number_image_points # Load extrinsics for camera pose (position, orientation). extrinsics_file = 'tests/data/calibration/left-1095.extrinsic.txt' extrinsics = np.loadtxt(extrinsics_file) left_camera_to_world = np.linalg.inv(extrinsics) # Load extrinsics for stereo. stereo_extrinsics_file = 'tests/data/calibration/calib.l2r.4x4' stereo_extrinsics = np.loadtxt(stereo_extrinsics_file) screen = app.primaryScreen() width = left_image.shape[1] height = left_image.shape[0] while width >= screen.geometry().width() or height >= screen.geometry().height(): width /= 2 height /= 2 # Create a vtk point model. vtk_points = vtk_point_model.VTKPointModel(model_points.astype(np.float), model_points.astype(np.byte)) widget.add_vtk_actor(vtk_points.actor) widget.set_video_images(left_image, right_image) widget.set_camera_matrices(left_intrinsics, right_intrinsics) widget.set_left_to_right(stereo_extrinsics) widget.set_camera_poses(left_camera_to_world) widget.resize(width, height) widget.show() widget.set_current_viewer_index(0) widget.set_current_viewer_index(1) widget.set_current_viewer_index(2) widget.render() six.print_('Chosen size = (' + str(width) + 'x' + str(height) + ')') six.print_('Left image = :' + str(left_image.shape)) six.print_('Right image = :' + str(right_image.shape)) six.print_('Widget = (' + str(widget.width()) + ', ' + str(widget.height()) + ')') # Project points using OpenCV. right_camera_to_world = cam.compute_right_camera_pose(left_camera_to_world, stereo_extrinsics) right_points = pu.project_points(model_points, right_camera_to_world, right_intrinsics ) rms_opencv = 0 for counter in range(0, number_model_points): i_c = image_points[counter] dx = right_points[counter][0][0] - i_c[0] dy = right_points[counter][0][1] - i_c[1] rms_opencv += (dx * dx + dy * dy) rms_opencv /= number_model_points rms_opencv = np.sqrt(rms_opencv) assert rms_opencv < 1 widget.save_scene_to_file('tests/output/test_interlaced_stereo_window.png') #app.exec_()
def test_point_model_invalid_because_opacity_too_high(): with pytest.raises(TypeError): pm.VTKPointModel(np.ones((1, 6)), -1.1)
def test_point_model_invalid_because_colours_not_uchar(): with pytest.raises(TypeError): pm.VTKPointModel(np.ones((1, 3), dtype=np.float), np.ones((1, 3), dtype=np.int))
def test_point_model_invalid_because_opacity_not_float(): with pytest.raises(TypeError): pm.VTKPointModel(np.ones((1, 6)), 1)
def test_point_model_invalid_because_different_shape(): with pytest.raises(ValueError): pm.VTKPointModel(np.ones((1, 3)), np.ones((2, 3)))
def test_point_model_invalid_because_no_colours(): with pytest.raises(ValueError): pm.VTKPointModel(np.ones((1, 3)), np.ones((0, 3)))
def test_point_model_invalid_because_colours_not_got_3_columns(): with pytest.raises(ValueError): pm.VTKPointModel(np.ones((1, 3)), np.ones((1, 2)))
def test_point_model_invalid_because_colours_not_numpy_array(): with pytest.raises(TypeError): pm.VTKPointModel(np.ones((1, 3)), 1)
def test_point_model_invalid_because_null_points(): with pytest.raises(ValueError): pm.VTKPointModel(None, None)