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
|
start |
int
|
Indicates the starting position from which video should generate frames |
0
|
end |
Optional[int]
|
Indicates the ending position at which video should stop generating frames. If None, video will be read to the end. |
None
|
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'):
... ...
Source code in supervision/utils/video.py
113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
|
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:
>>> import supervision as sv
>>> def callback(scene: np.ndarray, index: int) -> np.ndarray:
... ...
>>> process_video(
... source_path='...',
... target_path='...',
... callback=callback
... )
Source code in supervision/utils/video.py
151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 |
|