Deprecated! Please use mmcv instead.

October 12, 2018 ยท View on GitHub

Introduction

PyPI Version Python Version Build Status Coverage Status

cvbase is a miscellaneous set of tools which maybe helpful for computer vision research. It comprises the following parts.

  • IO helpers
  • Image/Video operations
  • OpenCV wrappers for python2/3 and opencv 2/3
  • Timer
  • Progress visualization
  • Plotting tools
  • Object detection utils

Try and start with

pip install cvbase

See documentation for more features and usage.

There are some popular features such as progress visualization, timer, video to frames/frames to videos.

  • Progress visualization

    If you want to apply a method to a list of items and track the progress, track_progress is a good choice. It will display a progress bar to tell the progress and ETA.

    import cvbase as cvb
    
    def func(item):
        # do something
        pass
    
    tasks = [item_1, item_2, ..., item_n]
    
    cvb.track_progress(func, tasks)
    

    The output is like the following. progress

    There is another method track_parallel_progress, which wraps multiprocessing and progress visualization.

    import cvbase as cvb
    
    def func(item):
        # do something
        pass
    
    tasks = [item_1, item_2, ..., item_n]
    
    cvb.track_parallel_progress(func, tasks, 8)
    # 8 workers
    
  • Timer

    It is convinient to computer the runtime of a code block with Timer.

    import time
    
    with cvb.Timer():
        # simulate some code block
        time.sleep(1)
    

    Or try a more flexible way.

    timer = cvb.Timer()
    # code block 1 here
    print(timer.since_start())
    # code block 2 here
    print(timer.since_last_check())
    print(timer.since_start())
    
  • Video/Frames conversion

    To split a video into frames.

    video = cvb.VideoReader('video_file.mp4')
    video.cvt2frames('frame_dir')
    

    Besides cvt2frames, VideoReader wraps many other useful methods to operate a video like a list object, like

    video = cvb.VideoReader('video_file.mp4')
    len(video)  # get total frame number
    video[5]  # get the 6th frame
    for img in video:  # iterate over all frames
        print(img.shape)
    

    To generate a video from frames, use the frames2video method.

    video = cvb.frames2video('frame_dir', 'out_video_file.avi', fps=30)
    
  • Video editing (needs ffmpeg)

    To cut a video.

    cvb.cut_video('input.mp4', 'output.mp4', start=3, end=10)
    

    To join two video clips.

    cvb.concat_video(['clip1.mp4', 'clip2.mp4'], 'output.mp4')
    

    To resize a video.

    cvb.resize_video('input.mp4', 'resized.mp4', (360, 240))
    # or
    cvb.resize_video('input.mp4', 'resized.mp4', ratio=2)
    

    To convert the format of a video.

    cvb.convert_video('input.avi', 'output.mp4', vcodec='h264')