Video
VideoInfo¶
A class to store video information, including width, height, fps and total number of frames.
Attributes:
Name | Type | Description |
---|---|---|
width |
int
|
width of the video in pixels |
height |
int
|
height of the video in pixels |
fps |
int
|
frames per second of the video |
total_frames |
int
|
total number of frames in the video, default is None |
Examples:
>>> import supervision as sv
>>> video_info = sv.VideoInfo.from_video_path(video_path='video.mp4')
>>> video_info
VideoInfo(width=3840, height=2160, fps=25, total_frames=538)
>>> video_info.resolution_wh
(3840, 2160)
Source code in supervision/utils/video.py
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
|
VideoSink¶
Context manager that saves video frames to a file using OpenCV.
Attributes:
Name | Type | Description |
---|---|---|
target_path |
str
|
The path to the output file where the video will be saved. |
video_info |
VideoInfo
|
Information about the video resolution, fps, and total frame count. |
Example
>>> import supervision as sv
>>> video_info = sv.VideoInfo.from_video_path(video_path='source_video.mp4')
>>> with sv.VideoSink(target_path='target_video.mp4', video_info=video_info) as sink:
... for frame in get_video_frames_generator(source_path='source_video.mp4', stride=2):
... sink.write_frame(frame=frame)
Source code in supervision/utils/video.py
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
|
get_video_frames_generator¶
Get a generator that yields the frames of the video.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
source_path |
str
|
The path of the video file. |
required |
stride |
int
|
Indicates the interval at which frames are returned, skipping stride - 1 frames between each. |
1
|
Returns:
Type | Description |
---|---|
Generator[ndarray, None, None]
|
A generator that yields the frames of the video. |
Examples:
>>> import supervision as sv
>>> for frame in sv.get_video_frames_generator(source_path='source_video.mp4', stride=2):
... ...
Source code in supervision/utils/video.py
100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
|
process_video¶
Process a video file by applying a callback function on each frame and saving the result to a target video file.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
source_path |
str
|
The path to the source video file. |
required |
target_path |
str
|
The path to the target video file. |
required |
callback |
Callable[[ndarray, int], ndarray]
|
A function that takes in a numpy ndarray representation of a video frame and an int index of the frame and returns a processed numpy ndarray representation of the frame. |
required |
Examples:
>>> from supervision import process_video
>>> def process_frame(scene: np.ndarray) -> np.ndarray:
... ...
>>> process_video(
... source_path='source_video.mp4',
... target_path='target_video.mp4',
... callback=process_frame
... )
Source code in supervision/utils/video.py
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 |
|