Esempio n. 1
0
def test_load_video():
    reload(files)
    # Load a test example
    from skvideo import datasets

    # Load with default values
    video = files.load_video(datasets.bikes(), as_timeseries=False)
    npt.assert_equal(isinstance(video, np.ndarray), True)
    npt.assert_equal(video.shape, [250, 272, 640, 3])

    # Load as grayscale
    video = files.load_video(datasets.bikes(), as_timeseries=False,
                             as_gray=True)
    npt.assert_equal(isinstance(video, np.ndarray), True)
    npt.assert_equal(video.shape, [250, 272, 640, 1])

    # Load as TimeSeries
    video = files.load_video(datasets.bikes(), as_timeseries=True)
    fps = files.load_video_framerate(datasets.bikes())
    npt.assert_equal(isinstance(video, utils.TimeSeries), True)
    npt.assert_almost_equal(video.tsample, 1.0 / fps)
    npt.assert_equal(video.shape, [272, 640, 3, 250])

    # Trigger an import error
    with mock.patch.dict("sys.modules", {"skvideo": {}, "skvideo.utils": {}}):
        with pytest.raises(ImportError):
            reload(files)
            files.load_video('invalid.avi')
Esempio n. 2
0
def test_save_video():
    # Load a test example
    reload(video)
    from skvideo import datasets

    # There and back again: ndarray
    videoin = video.load_video(datasets.bikes(), as_timeseries=False)
    fpsin = video.load_video_framerate(datasets.bikes())
    video.save_video(videoin, 'myvideo.mp4', fps=fpsin)
    videout = video.load_video('myvideo.mp4', as_timeseries=False)
    npt.assert_equal(videoin.shape, videout.shape)
    npt.assert_almost_equal(videout / 255.0, videoin / 255.0, decimal=0)

    # Write to file with different frame rate, widths, and heights
    fpsout = 15
    video.save_video(videoin, 'myvideo.mp4', width=100, fps=fpsout)
    npt.assert_equal(video.load_video_framerate('myvideo.mp4'), fpsout)
    videout = video.load_video('myvideo.mp4', as_timeseries=False)
    npt.assert_equal(videout.shape[2], 100)
    video.save_video(videoin, 'myvideo.mp4', height=20, fps=fpsout)
    videout = video.load_video('myvideo.mp4', as_timeseries=False)
    npt.assert_equal(videout.shape[1], 20)
    videout = None

    # There and back again: TimeSeries
    tsamplein = 1.0 / float(fpsin)
    tsampleout = 1.0 / float(fpsout)
    rollaxes = np.roll(range(videoin.ndim), -1)
    tsin = stimuli.TimeSeries(tsamplein, np.transpose(videoin, rollaxes))
    video.save_video(tsin, 'myvideo.mp4', fps=fpsout)
    npt.assert_equal(tsin.tsample, tsamplein)
    tsout = video.load_video('myvideo.mp4', as_timeseries=True)
    npt.assert_equal(video.load_video_framerate('myvideo.mp4'), fpsout)
    npt.assert_equal(isinstance(tsout, stimuli.TimeSeries), True)
    npt.assert_almost_equal(tsout.tsample, tsampleout)

    # Also verify the actual data
    tsres = tsin.resample(tsampleout)
    npt.assert_equal(tsout.shape, tsres.shape)
    npt.assert_almost_equal(tsout.data / 255.0,
                            tsres.data / tsres.data.max(),
                            decimal=0)
    os.remove('myvideo.mp4')

    with pytest.raises(TypeError):
        video.save_video([2, 3, 4], 'invalid.avi')

    # Trigger an import error
    with mock.patch.dict("sys.modules", {"skvideo": {}}):
        with pytest.raises(ImportError):
            reload(video)
            video.save_video(videoin, 'invalid.avi')
    with mock.patch.dict("sys.modules", {"skimage": {}}):
        with pytest.raises(ImportError):
            reload(video)
            video.save_video(videoin, 'invalid.avi')
Esempio n. 3
0
def test_load_framerate():
    # Load a test example
    reload(files)
    with pytest.raises(OSError):
        files.load_video_metadata('nothing_there.mp4')

    from skvideo import datasets
    fps = files.load_video_framerate(datasets.bikes())
    npt.assert_equal(fps, 25)

    # Trigger an import error
    with mock.patch.dict("sys.modules", {"skvideo": {}, "skvideo.utils": {}}):
        with pytest.raises(ImportError):
            reload(files)
            files.load_video_framerate(datasets.bikes())
Esempio n. 4
0
def test_load_video_metadata():
    # Load a test example
    reload(files)
    with pytest.raises(OSError):
        metadata = files.load_video_metadata('nothing_there.mp4')

    from skvideo import datasets
    metadata = files.load_video_metadata(datasets.bikes())
    npt.assert_equal(metadata['@codec_name'], 'h264')
    npt.assert_equal(metadata['@duration_ts'], '128000')
    npt.assert_equal(metadata['@r_frame_rate'], '25/1')

    # Trigger an import error
    with mock.patch.dict("sys.modules", {"skvideo": {}, "skvideo.utils": {}}):
        with pytest.raises(ImportError):
            reload(files)
            files.load_video_metadata(datasets.bikes())
Esempio n. 5
0
def test_video2stim():
    reload(image)
    reload(video)
    # Smoke-test example video
    from skvideo import datasets
    implant = implants.ArgusI()
    video.video2stim(datasets.bikes(), implant)
    with pytest.raises(OSError):
        video.video2stim('no-such-file.avi', implant)
Esempio n. 6
0
def test_video2pulsetrain():
    reload(stimuli)
    implant = implants.ArgusI()

    with pytest.raises(OSError):
        stimuli.video2pulsetrain('no-such-file.avi', implant)

    # Smoke-test example video
    from skvideo import datasets
    stimuli.video2pulsetrain(datasets.bikes(), implant)
Esempio n. 7
0
def test_save_video_sidebyside():
    reload(files)
    from skvideo import datasets
    videoin = files.load_video(datasets.bikes(), as_timeseries=False)
    fps = files.load_video_framerate(datasets.bikes())
    tsample = 1.0 / float(fps)
    rollaxes = np.roll(range(videoin.ndim), -1)
    percept = utils.TimeSeries(tsample, np.transpose(videoin, rollaxes))

    files.save_video_sidebyside(datasets.bikes(), percept, 'mymovie.mp4',
                                fps=fps)
    videout = files.load_video('mymovie.mp4', as_timeseries=False)
    npt.assert_equal(videout.shape[0], videoin.shape[0])
    npt.assert_equal(videout.shape[1], videoin.shape[1])
    npt.assert_equal(videout.shape[2], videoin.shape[2] * 2)
    npt.assert_equal(videout.shape[3], videoin.shape[3])

    with pytest.raises(TypeError):
        files.save_video_sidebyside(datasets.bikes(), [2, 3, 4], 'invalid.avi')

    with mock.patch.dict("sys.modules", {"skvideo": {}}):
        with pytest.raises(ImportError):
            reload(files)
            files.save_video_sidebyside(datasets.bikes(), percept,
                                        'invalid.avi')
    with mock.patch.dict("sys.modules", {"skimage": {}}):
        with pytest.raises(ImportError):
            reload(files)
            files.save_video_sidebyside(datasets.bikes(), percept,
                                        'invalid.avi')
Esempio n. 8
0
def test_load_video_generator():
    # Load a test example
    reload(files)

    from skvideo import datasets
    reader = files.load_video_generator(datasets.bikes())
    for frame in reader.nextFrame():
        npt.assert_equal(frame.shape, [272, 640, 3])

    # Trigger an import error
    with mock.patch.dict("sys.modules", {"skvideo": {}, "skvideo.utils": {}}):
        with pytest.raises(ImportError):
            reload(files)
            files.load_video_generator('invalid.avi')