VideoGear API Parameters¶
VideoGear acts as a Common Video-Capture API that provides internal access for both CamGear and PiGear APIs and their parameters.
enablePiCamera
¶
This parameter provide direct access to PiGear or CamGear APIs respectively in VideoGear. This means the if enablePiCamera
flag is True
, the PiGear API will be accessed, and if False
, the CamGear API will be accessed.
Data-Type: Boolean
Default Value: Its default value is False
.
Usage:
Its complete usage example is given here ➶.
Parameters for Stabilizer Backend¶
Enable this backend with stabilize=True
in VideoGear.
stabilize
¶
This parameter enable access to Stabilizer Class for stabilizing frames, i.e. can be set to True
(to enable) or unset to False
(to disable).
Data-Type: Boolean
Default Value: Its default value is False
.
Usage:
Its complete usage example is given here ➶.
options
¶
This parameter can be used in addition, to pass user-defined parameters supported by Stabilizer Class. These parameters can be formatted as this parameter's attribute.
Supported dictionary attributes for Stabilizer Class are:
-
SMOOTHING_RADIUS
(integer) : This attribute can be used to alter averaging window size. It basically handles the quality of stabilization at the expense of latency and sudden panning. Larger its value, less will be panning, more will be latency and vice-versa. Its default value is25
. You can easily pass this attribute as follows: -
BORDER_SIZE
(integer) : This attribute enables the feature to extend border size that compensates for stabilized output video frames motions. Its default value is0
(no borders). You can easily pass this attribute as follows: -
CROP_N_ZOOM
(boolean): This attribute enables the feature where it crops and zooms frames(to original size) to reduce the black borders from stabilization being too noticeable (similar to the Stabilized, cropped and Auto-Scaled feature available in Adobe AfterEffects). It simply works in conjunction with theBORDER_SIZE
attribute, i.e. when this attribute is enabled,BORDER_SIZE
will be used for cropping border instead of extending them. Its default value isFalse
. You can easily pass this attribute as follows: -
BORDER_TYPE
(string) : This attribute can be used to change the extended border style. Valid border types are'black'
,'reflect'
,'reflect_101'
,'replicate'
and'wrap'
, learn more about it here. Its default value is'black'
. You can easily pass this attribute as follows:Altering
BORDER_TYPE
attribute is Disabled whileCROP_N_ZOOM
is enabled.
Parameters for CamGear backend¶
Enable this backend with enablePiCamera=False
in VideoGear. Default is also False
.
source
¶
VideoGear API will throw RuntimeError
if source
provided is invalid.
This parameter defines the source for the input stream.
Data-Type: Based on input.
Default Value: Its default value is 0
.
Its valid input can be one of the following:
-
Index (integer): Valid index of the connected video device, for e.g
0
, or1
, or2
etc. as follows: -
Filepath (string): Valid path of the video file, for e.g
"/home/foo.mp4"
as follows: -
Streaming Services URL Address (string): Valid Video URL as input when Stream Mode is enabled(i.e.
stream_mode=True
)CamGear internally implements
yt_dlp
backend class for pipelining live video-frames and metadata from various streaming services. For example Twitch URL can be used as follows:Supported Streaming Websites
The list of all supported Streaming Websites URLs can be found here ➶
-
Network Address (string): Valid (
http(s)
,rtp
,rtsp
,rtmp
,mms
, etc.) incoming network stream address such as'rtsp://192.168.31.163:554/'
as input: -
GStreamer Pipeline:
CamGear API also supports GStreamer Pipeline.
Requirements for GStreamer Pipelining
Successful GStreamer Pipelining needs your OpenCV to be built with GStreamer support. Checkout this FAQ for compiling OpenCV with GStreamer support.
Thereby, You can easily check GStreamer support by running
print(cv2.getBuildInformation())
python command and see if output contains something similar as follows:Be sure convert video output into BGR colorspace before pipelining as follows:
stream_mode
¶
This parameter controls the Stream Mode, .i.e if enabled(stream_mode=True
), the VideoGear API will interpret the given source
input as YouTube URL address.
Due to a FFmpeg bug that causes video to freeze frequently in OpenCV, It is advised to always use GStreamer backend (backend=cv2.CAP_GSTREAMER
) for any livestreams (such as Twitch).
VideoGear automatically enforce GStreamer backend (backend=cv2.CAP_GSTREAMER
) for YouTube-livestreams!
VideoGear will exit with RuntimeError
for YouTube livestreams, if OpenCV is not compiled with GStreamer(>=v1.0.0
) support. Checkout this FAQ for compiling OpenCV with GStreamer support.
Data-Type: Boolean
Default Value: Its default value is False
.
Usage:
Its complete usage example is given here ➶.
backend
¶
This parameter manually selects the backend for OpenCV's VideoCapture class (only if specified).
Data-Type: Integer
Default Value: Its default value is 0
Usage:
All supported backends are listed here ➶
Its value can be for e.g. backend = cv2.CAP_DSHOW
for selecting Direct Show as backend:
options
¶
This parameter provides the ability to alter various Source Tweak Parameters available within OpenCV's VideoCapture API properties.
Data-Type: Dictionary
Default Value: Its default value is {}
Usage:
All supported parameters are listed here ➶
The desired parameters can be passed to VideoGear API by formatting them as this parameter's attributes, as follows:
# formatting parameters as dictionary attributes
options = {"CAP_PROP_FRAME_WIDTH":320, "CAP_PROP_FRAME_HEIGHT":240, "CAP_PROP_FPS":60}
# assigning it
VideoGear(source=0, **options)
Parameters for PiGear backend¶
Enable this backend with enablePiCamera=True
in VideoGear.
camera_num
¶
This parameter selects the camera index to be used as the source, allowing you to drive these multiple cameras simultaneously from within a single Python session. Its value can only be zero or greater, otherwise, VideoGear API will throw ValueError
for any negative value.
Data-Type: Integer
Default Value: Its default value is 0
.
Usage:
The complete usage example demonstrating the usage of the camera_num
parameter is available here ➶.
resolution
¶
This parameter controls the resolution - a tuple (i.e. (width,height)
) of two values giving the width and height of the output frames.
Make sure both width and height values should be at least 64
.
When using the Picamera2 backend, the resolution
parameter will be OVERRIDDEN, if the user explicitly defines the output_size
property of the sensor
configurational parameter.
Data-Type: Tuple
Default Value: Its default value is (640,480)
.
Usage:
framerate
¶
This parameter controls the framerate of the source.
Data-Type: integer/float
Default Value: Its default value is 30
.
Usage:
options
¶
This dictionary parameter in the internal PiGear API backend allows you to control various camera settings for both the picamera2
and legacy picamera
backends and some internal API tasks. These settings include:
A. Configurational Camera Parameters¶
- These parameters are provided by the underlying backend library (depending upon backend in use), and must be applied to the camera system before the camera can be started.
- These parameter include: Brightness, Contrast, Saturation, Exposure, Colour Temperature, Colour Gains, etc.
- All supported parameters are listed in this Usage example ➶
B. User-defined Parameters¶
- These user-defined parameters control specific internal behaviors of the API and perform certain tasks on the camera objects.
- All supported User-defined Parameters are listed here ➶
Data-Type: Dictionary
Default Value: Its default value is {}
Usage:
The complete usage example demonstrating the usage of the options
parameter is available here ➶.
You can format these user-defined and configurational parameters as attributes of this options
dictionary parameter as follows:
# formulate various Picamera2 API parameters
options = {
"queue": True,
"buffer_count": 4,
"controls": {"Brightness": 0.5, "ExposureValue": 2.0},
"exposure_compensation": 15,
"sensor": {"output_size": (480, 320)}, # !!! will override `resolution` !!!
}
# open pi video stream with defined parameters
stream = VideoGear(enablePiCamera=True, resolution=(640, 480), framerate=60, logging=True, **options).start()
# formulate various Picamera API parameters
options = {
"hflip": True,
"exposure_mode": "auto",
"iso": 800,
"exposure_compensation": 15,
"awb_mode": "horizon",
"sensor_mode": 0,
}
# open pi video stream with defined parameters
stream = VideoGear(enablePiCamera=True, resolution=(640, 480), framerate=60, logging=True, **options).start()
Common Parameters¶
These are common parameters that works with every backend in VideoGear.
colorspace
¶
This parameter selects the colorspace of the source stream.
Data-Type: String
Default Value: Its default value is None
.
Usage:
All supported colorspace
values are given here ➶
Its complete usage example is given here ➶
logging
¶
This parameter enables logging (if True
), essential for debugging.
Data-Type: Boolean
Default Value: Its default value is False
.
Usage:
time_delay
¶
This parameter set the time delay (in seconds) before the VideoGear API start reading the frames. This delay is only required if the source required some warm-up delay before starting up.
Data-Type: Integer
Default Value: Its default value is 0
.
Usage: