Giter VIP home page Giter VIP logo

video2images's Introduction

License: MIT PyPI Open Source? Yes! Python3 made-with-python install

DOI Downloads Downloads Downloads

About

A library that helps to convert volumetric video data into image frames with adjustable frame capturing rate functionality.

The main reason why I created this library is to ease the video to image frames conversion process. During video annotation we need frames of an video or a subpart of a video and that too custom frame capture rate, so this problems led to this library development.

How to install?

pip install video2images

Requirements

It will be automatically installed

  • tqdm, imageio, imageio-ffmpeg, moviepy

Class Object Argument Description

Argument Description
video_filepath source path of the video
start_time Default is None i.e 0s will be considered
end_time Default is None i.e till last duration will be
considered
capture_rate No. of frames you want to capture per second.
For e.g if my capture_rate= 20 then only first 20
frames will captured out of input Frames per second rate
save_format Output frame image extension. By default ".jpg"
out_dir Output directory for saving images. If not specified
a folder will be made in current directory and saved

Note:- The capture_rate if not specified will consider the original video frames per second rate

Frame Capture Rate Explaination

Valid Extensions

For Video

  • .mov
  • .avi
  • .mpg
  • .mpeg
  • .mp4
  • .mkv
  • .wmv

For Image

  • .jpg, .jpeg
  • .png
  • .bmp
  • .tiff, .tif
  • .dicom, .dcm

How to use?

Minimal setting (Basic)

from video2images import Video2Images


Video2Images(video_filepath="--path-to-video-file--",
             out_dir="--path-to-output-directory--")

Want to capture frames in between some interval

from video2images import Video2Images


# Lets take start_time to be 2mins i.e 120s
# & end_time to be 10 mins i,e 600s out of 20mins videos

Video2Images(video_filepath="--path-to-video-file--",
             start_time=120,
             end_time=600,
             out_dir="--path-to-output-directory--")

Want only first 'f' frames out of 30 frames per second

from video2images import Video2Images


# Let say f = 20 i.e capturing only first 20 frames
Video2Images(video_filepath="--path-to-video-file--",
             capture_rate=20,
             out_dir="--path-to-output-directory--")

Want output image to be saved in png or other format

from video2images import Video2Images


Video2Images(video_filepath="--path-to-video-file--",
             save_format=".png",
             out_dir="--path-to-output-directory--")

From command line

We can convert video frames to images by using simple command line as follows

$video2images --video_filepath <input video filepath> \
--start_time <some integer number in seconds> \ 
--end_time <some integer number in seconds> \
--capture_rate <some integer capture rate> \
--save_format <any one image extension> \
--out_dir <output folder name where all images will be pushed>

Note:- The output will be saved in a folder named frames_folder_{timestamp}

Output Process Screenshot

Author

I will be happy to connect with you guys!!

Linkedin

Twitter

Citation

@software{abhishek_c_salian_2020_4384148,
  author       = {Abhishek C. Salian},
  title        = {Video2Images: A python library for video frames extraction for video annotation based task},
  month        = dec,
  year         = 2020,
  publisher    = {Zenodo},
  version      = {v1.1},
  doi          = {10.5281/zenodo.4384147},
  url          = {http://doi.org/10.5281/zenodo.4384147}
}

Any suggestions are most welcome.

video2images's People

Contributors

abhisheksalian avatar vjgtigers avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

video2images's Issues

Unable to convert video to image

from video2images import Video2Images
import time
start_time = time.time()

Video2Images(video_filepath="/home/ComputerVision/tfrecords/My Movie 49.mov", out_dir="/home/ComputerVision/tfrecords/image/")
print("--- %s seconds ---" % (time.time() - start_time))

Error:
Traceback (most recent call last):
File "video2image.py", line 38, in
Video2Images(video_filepath="/home/ComputerVision/tfrecords/My Movie 49.mov", out_dir="/home/ComputerVision/tfrecords/image/")
File "/home/miniconda3/lib/python3.7/site-packages/video2images/video2images.py", line 127, in init
video_duration, vformat = self.__getDuration()
File "/home/miniconda3/lib/python3.7/site-packages/video2images/video2images.py", line 171, in __getDuration
video = moviepy.editor.VideoFileClip(self.video_filepath)
File "/home/miniconda3/lib/python3.7/site-packages/moviepy/video/io/VideoFileClip.py", line 91, in init
fps_source=fps_source)
File "/home/miniconda3/lib/python3.7/site-packages/moviepy/video/io/ffmpeg_reader.py", line 36, in init
fps_source)
File "/home/miniconda3/lib/python3.7/site-packages/moviepy/video/io/ffmpeg_reader.py", line 259, in ffmpeg_parse_infos
infos = error.decode('utf8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 1506: invalid start byte

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.