Esempio n. 1
0
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
Esempio n. 2
0
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_()
Esempio n. 4
0
def test_point_model_invalid_because_opacity_too_high():
    with pytest.raises(TypeError):
        pm.VTKPointModel(np.ones((1, 6)), -1.1)
Esempio n. 5
0
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))
Esempio n. 6
0
def test_point_model_invalid_because_opacity_not_float():
    with pytest.raises(TypeError):
        pm.VTKPointModel(np.ones((1, 6)), 1)
Esempio n. 7
0
def test_point_model_invalid_because_different_shape():
    with pytest.raises(ValueError):
        pm.VTKPointModel(np.ones((1, 3)), np.ones((2, 3)))
Esempio n. 8
0
def test_point_model_invalid_because_no_colours():
    with pytest.raises(ValueError):
        pm.VTKPointModel(np.ones((1, 3)), np.ones((0, 3)))
Esempio n. 9
0
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)))
Esempio n. 10
0
def test_point_model_invalid_because_colours_not_numpy_array():
    with pytest.raises(TypeError):
        pm.VTKPointModel(np.ones((1, 3)), 1)
Esempio n. 11
0
def test_point_model_invalid_because_null_points():
    with pytest.raises(ValueError):
        pm.VTKPointModel(None, None)