Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Tetragramm
GitHub Repository: Tetragramm/opencv
Path: blob/master/modules/videoio/include/opencv2/videoio.hpp
16349 views
1
/*M///////////////////////////////////////////////////////////////////////////////////////
2
//
3
// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
4
//
5
// By downloading, copying, installing or using the software you agree to this license.
6
// If you do not agree to this license, do not download, install,
7
// copy or use the software.
8
//
9
//
10
// License Agreement
11
// For Open Source Computer Vision Library
12
//
13
// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
14
// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
15
// Third party copyrights are property of their respective owners.
16
//
17
// Redistribution and use in source and binary forms, with or without modification,
18
// are permitted provided that the following conditions are met:
19
//
20
// * Redistribution's of source code must retain the above copyright notice,
21
// this list of conditions and the following disclaimer.
22
//
23
// * Redistribution's in binary form must reproduce the above copyright notice,
24
// this list of conditions and the following disclaimer in the documentation
25
// and/or other materials provided with the distribution.
26
//
27
// * The name of the copyright holders may not be used to endorse or promote products
28
// derived from this software without specific prior written permission.
29
//
30
// This software is provided by the copyright holders and contributors "as is" and
31
// any express or implied warranties, including, but not limited to, the implied
32
// warranties of merchantability and fitness for a particular purpose are disclaimed.
33
// In no event shall the Intel Corporation or contributors be liable for any direct,
34
// indirect, incidental, special, exemplary, or consequential damages
35
// (including, but not limited to, procurement of substitute goods or services;
36
// loss of use, data, or profits; or business interruption) however caused
37
// and on any theory of liability, whether in contract, strict liability,
38
// or tort (including negligence or otherwise) arising in any way out of
39
// the use of this software, even if advised of the possibility of such damage.
40
//
41
//M*/
42
43
#ifndef OPENCV_VIDEOIO_HPP
44
#define OPENCV_VIDEOIO_HPP
45
46
#include "opencv2/core.hpp"
47
48
/**
49
@defgroup videoio Video I/O
50
51
@brief Read and write video or images sequence with OpenCV
52
53
### See also:
54
- @ref videoio_overview
55
- Tutorials: @ref tutorial_table_of_content_videoio
56
@{
57
@defgroup videoio_flags_base Flags for video I/O
58
@defgroup videoio_flags_others Additional flags for video I/O API backends
59
@defgroup videoio_c C API for video I/O
60
@defgroup videoio_ios iOS glue for video I/O
61
@defgroup videoio_winrt WinRT glue for video I/O
62
@defgroup videoio_registry Query I/O API backends registry
63
@}
64
*/
65
66
////////////////////////////////// video io /////////////////////////////////
67
68
typedef struct CvCapture CvCapture;
69
typedef struct CvVideoWriter CvVideoWriter;
70
71
namespace cv
72
{
73
74
//! @addtogroup videoio
75
//! @{
76
77
//! @addtogroup videoio_flags_base
78
//! @{
79
80
81
/** @brief %VideoCapture API backends identifier.
82
83
Select preferred API for a capture object.
84
To be used in the VideoCapture::VideoCapture() constructor or VideoCapture::open()
85
86
@note Backends are available only if they have been built with your OpenCV binaries.
87
See @ref videoio_overview for more information.
88
*/
89
enum VideoCaptureAPIs {
90
CAP_ANY = 0, //!< Auto detect == 0
91
CAP_VFW = 200, //!< Video For Windows (platform native)
92
CAP_V4L = 200, //!< V4L/V4L2 capturing support via libv4l
93
CAP_V4L2 = CAP_V4L, //!< Same as CAP_V4L
94
CAP_FIREWIRE = 300, //!< IEEE 1394 drivers
95
CAP_FIREWARE = CAP_FIREWIRE, //!< Same as CAP_FIREWIRE
96
CAP_IEEE1394 = CAP_FIREWIRE, //!< Same as CAP_FIREWIRE
97
CAP_DC1394 = CAP_FIREWIRE, //!< Same as CAP_FIREWIRE
98
CAP_CMU1394 = CAP_FIREWIRE, //!< Same as CAP_FIREWIRE
99
CAP_QT = 500, //!< QuickTime
100
CAP_UNICAP = 600, //!< Unicap drivers
101
CAP_DSHOW = 700, //!< DirectShow (via videoInput)
102
CAP_PVAPI = 800, //!< PvAPI, Prosilica GigE SDK
103
CAP_OPENNI = 900, //!< OpenNI (for Kinect)
104
CAP_OPENNI_ASUS = 910, //!< OpenNI (for Asus Xtion)
105
CAP_ANDROID = 1000, //!< Android - not used
106
CAP_XIAPI = 1100, //!< XIMEA Camera API
107
CAP_AVFOUNDATION = 1200, //!< AVFoundation framework for iOS (OS X Lion will have the same API)
108
CAP_GIGANETIX = 1300, //!< Smartek Giganetix GigEVisionSDK
109
CAP_MSMF = 1400, //!< Microsoft Media Foundation (via videoInput)
110
CAP_WINRT = 1410, //!< Microsoft Windows Runtime using Media Foundation
111
CAP_INTELPERC = 1500, //!< Intel Perceptual Computing SDK
112
CAP_OPENNI2 = 1600, //!< OpenNI2 (for Kinect)
113
CAP_OPENNI2_ASUS = 1610, //!< OpenNI2 (for Asus Xtion and Occipital Structure sensors)
114
CAP_GPHOTO2 = 1700, //!< gPhoto2 connection
115
CAP_GSTREAMER = 1800, //!< GStreamer
116
CAP_FFMPEG = 1900, //!< Open and record video file or stream using the FFMPEG library
117
CAP_IMAGES = 2000, //!< OpenCV Image Sequence (e.g. img_%02d.jpg)
118
CAP_ARAVIS = 2100, //!< Aravis SDK
119
CAP_OPENCV_MJPEG = 2200, //!< Built-in OpenCV MotionJPEG codec
120
CAP_INTEL_MFX = 2300, //!< Intel MediaSDK
121
CAP_XINE = 2400, //!< XINE engine (Linux)
122
};
123
124
/** @brief %VideoCapture generic properties identifier.
125
126
Reading / writing properties involves many layers. Some unexpected result might happens along this chain.
127
Effective behaviour depends from device hardware, driver and API Backend.
128
@sa videoio_flags_others, VideoCapture::get(), VideoCapture::set()
129
*/
130
enum VideoCaptureProperties {
131
CAP_PROP_POS_MSEC =0, //!< Current position of the video file in milliseconds.
132
CAP_PROP_POS_FRAMES =1, //!< 0-based index of the frame to be decoded/captured next.
133
CAP_PROP_POS_AVI_RATIO =2, //!< Relative position of the video file: 0=start of the film, 1=end of the film.
134
CAP_PROP_FRAME_WIDTH =3, //!< Width of the frames in the video stream.
135
CAP_PROP_FRAME_HEIGHT =4, //!< Height of the frames in the video stream.
136
CAP_PROP_FPS =5, //!< Frame rate.
137
CAP_PROP_FOURCC =6, //!< 4-character code of codec. see VideoWriter::fourcc .
138
CAP_PROP_FRAME_COUNT =7, //!< Number of frames in the video file.
139
CAP_PROP_FORMAT =8, //!< Format of the %Mat objects returned by VideoCapture::retrieve().
140
CAP_PROP_MODE =9, //!< Backend-specific value indicating the current capture mode.
141
CAP_PROP_BRIGHTNESS =10, //!< Brightness of the image (only for those cameras that support).
142
CAP_PROP_CONTRAST =11, //!< Contrast of the image (only for cameras).
143
CAP_PROP_SATURATION =12, //!< Saturation of the image (only for cameras).
144
CAP_PROP_HUE =13, //!< Hue of the image (only for cameras).
145
CAP_PROP_GAIN =14, //!< Gain of the image (only for those cameras that support).
146
CAP_PROP_EXPOSURE =15, //!< Exposure (only for those cameras that support).
147
CAP_PROP_CONVERT_RGB =16, //!< Boolean flags indicating whether images should be converted to RGB.
148
CAP_PROP_WHITE_BALANCE_BLUE_U =17, //!< Currently unsupported.
149
CAP_PROP_RECTIFICATION =18, //!< Rectification flag for stereo cameras (note: only supported by DC1394 v 2.x backend currently).
150
CAP_PROP_MONOCHROME =19,
151
CAP_PROP_SHARPNESS =20,
152
CAP_PROP_AUTO_EXPOSURE =21, //!< DC1394: exposure control done by camera, user can adjust reference level using this feature.
153
CAP_PROP_GAMMA =22,
154
CAP_PROP_TEMPERATURE =23,
155
CAP_PROP_TRIGGER =24,
156
CAP_PROP_TRIGGER_DELAY =25,
157
CAP_PROP_WHITE_BALANCE_RED_V =26,
158
CAP_PROP_ZOOM =27,
159
CAP_PROP_FOCUS =28,
160
CAP_PROP_GUID =29,
161
CAP_PROP_ISO_SPEED =30,
162
CAP_PROP_BACKLIGHT =32,
163
CAP_PROP_PAN =33,
164
CAP_PROP_TILT =34,
165
CAP_PROP_ROLL =35,
166
CAP_PROP_IRIS =36,
167
CAP_PROP_SETTINGS =37, //!< Pop up video/camera filter dialog (note: only supported by DSHOW backend currently. The property value is ignored)
168
CAP_PROP_BUFFERSIZE =38,
169
CAP_PROP_AUTOFOCUS =39,
170
CAP_PROP_SAR_NUM =40, //!< Sample aspect ratio: num/den (num)
171
CAP_PROP_SAR_DEN =41, //!< Sample aspect ratio: num/den (den)
172
CAP_PROP_BACKEND =42, //!< current backend (enum VideoCaptureAPIs). Read-only property
173
CAP_CROSSBAR_INPIN_TYPE =43, //!<CrossBar input pin Setting
174
#ifndef CV_DOXYGEN
175
CV__CAP_PROP_LATEST
176
#endif
177
};
178
179
180
/** @brief Generic camera output modes identifier.
181
@note Currently, these are supported through the libv4l backend only.
182
*/
183
enum VideoCaptureModes {
184
CAP_MODE_BGR = 0, //!< BGR24 (default)
185
CAP_MODE_RGB = 1, //!< RGB24
186
CAP_MODE_GRAY = 2, //!< Y8
187
CAP_MODE_YUYV = 3 //!< YUYV
188
};
189
190
/** @brief %VideoWriter generic properties identifier.
191
@sa VideoWriter::get(), VideoWriter::set()
192
*/
193
enum VideoWriterProperties {
194
VIDEOWRITER_PROP_QUALITY = 1, //!< Current quality (0..100%) of the encoded videostream. Can be adjusted dynamically in some codecs.
195
VIDEOWRITER_PROP_FRAMEBYTES = 2, //!< (Read-only): Size of just encoded video frame. Note that the encoding order may be different from representation order.
196
VIDEOWRITER_PROP_NSTRIPES = 3 //!< Number of stripes for parallel encoding. -1 for auto detection.
197
};
198
199
//! @} videoio_flags_base
200
201
//! @addtogroup videoio_flags_others
202
//! @{
203
204
/** @name IEEE 1394 drivers
205
@{
206
*/
207
208
/** @brief Modes of the IEEE 1394 controlling registers
209
(can be: auto, manual, auto single push, absolute Latter allowed with any other mode)
210
every feature can have only one mode turned on at a time
211
*/
212
enum { CAP_PROP_DC1394_OFF = -4, //!< turn the feature off (not controlled manually nor automatically).
213
CAP_PROP_DC1394_MODE_MANUAL = -3, //!< set automatically when a value of the feature is set by the user.
214
CAP_PROP_DC1394_MODE_AUTO = -2,
215
CAP_PROP_DC1394_MODE_ONE_PUSH_AUTO = -1,
216
CAP_PROP_DC1394_MAX = 31
217
};
218
219
//! @} IEEE 1394 drivers
220
221
/** @name OpenNI (for Kinect)
222
@{
223
*/
224
225
//! OpenNI map generators
226
enum { CAP_OPENNI_DEPTH_GENERATOR = 1 << 31,
227
CAP_OPENNI_IMAGE_GENERATOR = 1 << 30,
228
CAP_OPENNI_IR_GENERATOR = 1 << 29,
229
CAP_OPENNI_GENERATORS_MASK = CAP_OPENNI_DEPTH_GENERATOR + CAP_OPENNI_IMAGE_GENERATOR + CAP_OPENNI_IR_GENERATOR
230
};
231
232
//! Properties of cameras available through OpenNI backend
233
enum { CAP_PROP_OPENNI_OUTPUT_MODE = 100,
234
CAP_PROP_OPENNI_FRAME_MAX_DEPTH = 101, //!< In mm
235
CAP_PROP_OPENNI_BASELINE = 102, //!< In mm
236
CAP_PROP_OPENNI_FOCAL_LENGTH = 103, //!< In pixels
237
CAP_PROP_OPENNI_REGISTRATION = 104, //!< Flag that synchronizes the remapping depth map to image map
238
//!< by changing depth generator's view point (if the flag is "on") or
239
//!< sets this view point to its normal one (if the flag is "off").
240
CAP_PROP_OPENNI_REGISTRATION_ON = CAP_PROP_OPENNI_REGISTRATION,
241
CAP_PROP_OPENNI_APPROX_FRAME_SYNC = 105,
242
CAP_PROP_OPENNI_MAX_BUFFER_SIZE = 106,
243
CAP_PROP_OPENNI_CIRCLE_BUFFER = 107,
244
CAP_PROP_OPENNI_MAX_TIME_DURATION = 108,
245
CAP_PROP_OPENNI_GENERATOR_PRESENT = 109,
246
CAP_PROP_OPENNI2_SYNC = 110,
247
CAP_PROP_OPENNI2_MIRROR = 111
248
};
249
250
//! OpenNI shortcuts
251
enum { CAP_OPENNI_IMAGE_GENERATOR_PRESENT = CAP_OPENNI_IMAGE_GENERATOR + CAP_PROP_OPENNI_GENERATOR_PRESENT,
252
CAP_OPENNI_IMAGE_GENERATOR_OUTPUT_MODE = CAP_OPENNI_IMAGE_GENERATOR + CAP_PROP_OPENNI_OUTPUT_MODE,
253
CAP_OPENNI_DEPTH_GENERATOR_PRESENT = CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_GENERATOR_PRESENT,
254
CAP_OPENNI_DEPTH_GENERATOR_BASELINE = CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_BASELINE,
255
CAP_OPENNI_DEPTH_GENERATOR_FOCAL_LENGTH = CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_FOCAL_LENGTH,
256
CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION = CAP_OPENNI_DEPTH_GENERATOR + CAP_PROP_OPENNI_REGISTRATION,
257
CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION_ON = CAP_OPENNI_DEPTH_GENERATOR_REGISTRATION,
258
CAP_OPENNI_IR_GENERATOR_PRESENT = CAP_OPENNI_IR_GENERATOR + CAP_PROP_OPENNI_GENERATOR_PRESENT,
259
};
260
261
//! OpenNI data given from depth generator
262
enum { CAP_OPENNI_DEPTH_MAP = 0, //!< Depth values in mm (CV_16UC1)
263
CAP_OPENNI_POINT_CLOUD_MAP = 1, //!< XYZ in meters (CV_32FC3)
264
CAP_OPENNI_DISPARITY_MAP = 2, //!< Disparity in pixels (CV_8UC1)
265
CAP_OPENNI_DISPARITY_MAP_32F = 3, //!< Disparity in pixels (CV_32FC1)
266
CAP_OPENNI_VALID_DEPTH_MASK = 4, //!< CV_8UC1
267
268
CAP_OPENNI_BGR_IMAGE = 5, //!< Data given from RGB image generator
269
CAP_OPENNI_GRAY_IMAGE = 6, //!< Data given from RGB image generator
270
271
CAP_OPENNI_IR_IMAGE = 7 //!< Data given from IR image generator
272
};
273
274
//! Supported output modes of OpenNI image generator
275
enum { CAP_OPENNI_VGA_30HZ = 0,
276
CAP_OPENNI_SXGA_15HZ = 1,
277
CAP_OPENNI_SXGA_30HZ = 2,
278
CAP_OPENNI_QVGA_30HZ = 3,
279
CAP_OPENNI_QVGA_60HZ = 4
280
};
281
282
//! @} OpenNI
283
284
/** @name GStreamer
285
@{
286
*/
287
288
enum { CAP_PROP_GSTREAMER_QUEUE_LENGTH = 200 //!< Default is 1
289
};
290
291
//! @} GStreamer
292
293
/** @name PvAPI, Prosilica GigE SDK
294
@{
295
*/
296
297
//! PVAPI
298
enum { CAP_PROP_PVAPI_MULTICASTIP = 300, //!< IP for enable multicast master mode. 0 for disable multicast.
299
CAP_PROP_PVAPI_FRAMESTARTTRIGGERMODE = 301, //!< FrameStartTriggerMode: Determines how a frame is initiated.
300
CAP_PROP_PVAPI_DECIMATIONHORIZONTAL = 302, //!< Horizontal sub-sampling of the image.
301
CAP_PROP_PVAPI_DECIMATIONVERTICAL = 303, //!< Vertical sub-sampling of the image.
302
CAP_PROP_PVAPI_BINNINGX = 304, //!< Horizontal binning factor.
303
CAP_PROP_PVAPI_BINNINGY = 305, //!< Vertical binning factor.
304
CAP_PROP_PVAPI_PIXELFORMAT = 306 //!< Pixel format.
305
};
306
307
//! PVAPI: FrameStartTriggerMode
308
enum { CAP_PVAPI_FSTRIGMODE_FREERUN = 0, //!< Freerun
309
CAP_PVAPI_FSTRIGMODE_SYNCIN1 = 1, //!< SyncIn1
310
CAP_PVAPI_FSTRIGMODE_SYNCIN2 = 2, //!< SyncIn2
311
CAP_PVAPI_FSTRIGMODE_FIXEDRATE = 3, //!< FixedRate
312
CAP_PVAPI_FSTRIGMODE_SOFTWARE = 4 //!< Software
313
};
314
315
//! PVAPI: DecimationHorizontal, DecimationVertical
316
enum { CAP_PVAPI_DECIMATION_OFF = 1, //!< Off
317
CAP_PVAPI_DECIMATION_2OUTOF4 = 2, //!< 2 out of 4 decimation
318
CAP_PVAPI_DECIMATION_2OUTOF8 = 4, //!< 2 out of 8 decimation
319
CAP_PVAPI_DECIMATION_2OUTOF16 = 8 //!< 2 out of 16 decimation
320
};
321
322
//! PVAPI: PixelFormat
323
enum { CAP_PVAPI_PIXELFORMAT_MONO8 = 1, //!< Mono8
324
CAP_PVAPI_PIXELFORMAT_MONO16 = 2, //!< Mono16
325
CAP_PVAPI_PIXELFORMAT_BAYER8 = 3, //!< Bayer8
326
CAP_PVAPI_PIXELFORMAT_BAYER16 = 4, //!< Bayer16
327
CAP_PVAPI_PIXELFORMAT_RGB24 = 5, //!< Rgb24
328
CAP_PVAPI_PIXELFORMAT_BGR24 = 6, //!< Bgr24
329
CAP_PVAPI_PIXELFORMAT_RGBA32 = 7, //!< Rgba32
330
CAP_PVAPI_PIXELFORMAT_BGRA32 = 8, //!< Bgra32
331
};
332
333
//! @} PvAPI
334
335
/** @name XIMEA Camera API
336
@{
337
*/
338
339
//! Properties of cameras available through XIMEA SDK backend
340
enum { CAP_PROP_XI_DOWNSAMPLING = 400, //!< Change image resolution by binning or skipping.
341
CAP_PROP_XI_DATA_FORMAT = 401, //!< Output data format.
342
CAP_PROP_XI_OFFSET_X = 402, //!< Horizontal offset from the origin to the area of interest (in pixels).
343
CAP_PROP_XI_OFFSET_Y = 403, //!< Vertical offset from the origin to the area of interest (in pixels).
344
CAP_PROP_XI_TRG_SOURCE = 404, //!< Defines source of trigger.
345
CAP_PROP_XI_TRG_SOFTWARE = 405, //!< Generates an internal trigger. PRM_TRG_SOURCE must be set to TRG_SOFTWARE.
346
CAP_PROP_XI_GPI_SELECTOR = 406, //!< Selects general purpose input.
347
CAP_PROP_XI_GPI_MODE = 407, //!< Set general purpose input mode.
348
CAP_PROP_XI_GPI_LEVEL = 408, //!< Get general purpose level.
349
CAP_PROP_XI_GPO_SELECTOR = 409, //!< Selects general purpose output.
350
CAP_PROP_XI_GPO_MODE = 410, //!< Set general purpose output mode.
351
CAP_PROP_XI_LED_SELECTOR = 411, //!< Selects camera signalling LED.
352
CAP_PROP_XI_LED_MODE = 412, //!< Define camera signalling LED functionality.
353
CAP_PROP_XI_MANUAL_WB = 413, //!< Calculates White Balance(must be called during acquisition).
354
CAP_PROP_XI_AUTO_WB = 414, //!< Automatic white balance.
355
CAP_PROP_XI_AEAG = 415, //!< Automatic exposure/gain.
356
CAP_PROP_XI_EXP_PRIORITY = 416, //!< Exposure priority (0.5 - exposure 50%, gain 50%).
357
CAP_PROP_XI_AE_MAX_LIMIT = 417, //!< Maximum limit of exposure in AEAG procedure.
358
CAP_PROP_XI_AG_MAX_LIMIT = 418, //!< Maximum limit of gain in AEAG procedure.
359
CAP_PROP_XI_AEAG_LEVEL = 419, //!< Average intensity of output signal AEAG should achieve(in %).
360
CAP_PROP_XI_TIMEOUT = 420, //!< Image capture timeout in milliseconds.
361
CAP_PROP_XI_EXPOSURE = 421, //!< Exposure time in microseconds.
362
CAP_PROP_XI_EXPOSURE_BURST_COUNT = 422, //!< Sets the number of times of exposure in one frame.
363
CAP_PROP_XI_GAIN_SELECTOR = 423, //!< Gain selector for parameter Gain allows to select different type of gains.
364
CAP_PROP_XI_GAIN = 424, //!< Gain in dB.
365
CAP_PROP_XI_DOWNSAMPLING_TYPE = 426, //!< Change image downsampling type.
366
CAP_PROP_XI_BINNING_SELECTOR = 427, //!< Binning engine selector.
367
CAP_PROP_XI_BINNING_VERTICAL = 428, //!< Vertical Binning - number of vertical photo-sensitive cells to combine together.
368
CAP_PROP_XI_BINNING_HORIZONTAL = 429, //!< Horizontal Binning - number of horizontal photo-sensitive cells to combine together.
369
CAP_PROP_XI_BINNING_PATTERN = 430, //!< Binning pattern type.
370
CAP_PROP_XI_DECIMATION_SELECTOR = 431, //!< Decimation engine selector.
371
CAP_PROP_XI_DECIMATION_VERTICAL = 432, //!< Vertical Decimation - vertical sub-sampling of the image - reduces the vertical resolution of the image by the specified vertical decimation factor.
372
CAP_PROP_XI_DECIMATION_HORIZONTAL = 433, //!< Horizontal Decimation - horizontal sub-sampling of the image - reduces the horizontal resolution of the image by the specified vertical decimation factor.
373
CAP_PROP_XI_DECIMATION_PATTERN = 434, //!< Decimation pattern type.
374
CAP_PROP_XI_TEST_PATTERN_GENERATOR_SELECTOR = 587, //!< Selects which test pattern generator is controlled by the TestPattern feature.
375
CAP_PROP_XI_TEST_PATTERN = 588, //!< Selects which test pattern type is generated by the selected generator.
376
CAP_PROP_XI_IMAGE_DATA_FORMAT = 435, //!< Output data format.
377
CAP_PROP_XI_SHUTTER_TYPE = 436, //!< Change sensor shutter type(CMOS sensor).
378
CAP_PROP_XI_SENSOR_TAPS = 437, //!< Number of taps.
379
CAP_PROP_XI_AEAG_ROI_OFFSET_X = 439, //!< Automatic exposure/gain ROI offset X.
380
CAP_PROP_XI_AEAG_ROI_OFFSET_Y = 440, //!< Automatic exposure/gain ROI offset Y.
381
CAP_PROP_XI_AEAG_ROI_WIDTH = 441, //!< Automatic exposure/gain ROI Width.
382
CAP_PROP_XI_AEAG_ROI_HEIGHT = 442, //!< Automatic exposure/gain ROI Height.
383
CAP_PROP_XI_BPC = 445, //!< Correction of bad pixels.
384
CAP_PROP_XI_WB_KR = 448, //!< White balance red coefficient.
385
CAP_PROP_XI_WB_KG = 449, //!< White balance green coefficient.
386
CAP_PROP_XI_WB_KB = 450, //!< White balance blue coefficient.
387
CAP_PROP_XI_WIDTH = 451, //!< Width of the Image provided by the device (in pixels).
388
CAP_PROP_XI_HEIGHT = 452, //!< Height of the Image provided by the device (in pixels).
389
CAP_PROP_XI_REGION_SELECTOR = 589, //!< Selects Region in Multiple ROI which parameters are set by width, height, ... ,region mode.
390
CAP_PROP_XI_REGION_MODE = 595, //!< Activates/deactivates Region selected by Region Selector.
391
CAP_PROP_XI_LIMIT_BANDWIDTH = 459, //!< Set/get bandwidth(datarate)(in Megabits).
392
CAP_PROP_XI_SENSOR_DATA_BIT_DEPTH = 460, //!< Sensor output data bit depth.
393
CAP_PROP_XI_OUTPUT_DATA_BIT_DEPTH = 461, //!< Device output data bit depth.
394
CAP_PROP_XI_IMAGE_DATA_BIT_DEPTH = 462, //!< bitdepth of data returned by function xiGetImage.
395
CAP_PROP_XI_OUTPUT_DATA_PACKING = 463, //!< Device output data packing (or grouping) enabled. Packing could be enabled if output_data_bit_depth > 8 and packing capability is available.
396
CAP_PROP_XI_OUTPUT_DATA_PACKING_TYPE = 464, //!< Data packing type. Some cameras supports only specific packing type.
397
CAP_PROP_XI_IS_COOLED = 465, //!< Returns 1 for cameras that support cooling.
398
CAP_PROP_XI_COOLING = 466, //!< Start camera cooling.
399
CAP_PROP_XI_TARGET_TEMP = 467, //!< Set sensor target temperature for cooling.
400
CAP_PROP_XI_CHIP_TEMP = 468, //!< Camera sensor temperature.
401
CAP_PROP_XI_HOUS_TEMP = 469, //!< Camera housing temperature.
402
CAP_PROP_XI_HOUS_BACK_SIDE_TEMP = 590, //!< Camera housing back side temperature.
403
CAP_PROP_XI_SENSOR_BOARD_TEMP = 596, //!< Camera sensor board temperature.
404
CAP_PROP_XI_CMS = 470, //!< Mode of color management system.
405
CAP_PROP_XI_APPLY_CMS = 471, //!< Enable applying of CMS profiles to xiGetImage (see XI_PRM_INPUT_CMS_PROFILE, XI_PRM_OUTPUT_CMS_PROFILE).
406
CAP_PROP_XI_IMAGE_IS_COLOR = 474, //!< Returns 1 for color cameras.
407
CAP_PROP_XI_COLOR_FILTER_ARRAY = 475, //!< Returns color filter array type of RAW data.
408
CAP_PROP_XI_GAMMAY = 476, //!< Luminosity gamma.
409
CAP_PROP_XI_GAMMAC = 477, //!< Chromaticity gamma.
410
CAP_PROP_XI_SHARPNESS = 478, //!< Sharpness Strength.
411
CAP_PROP_XI_CC_MATRIX_00 = 479, //!< Color Correction Matrix element [0][0].
412
CAP_PROP_XI_CC_MATRIX_01 = 480, //!< Color Correction Matrix element [0][1].
413
CAP_PROP_XI_CC_MATRIX_02 = 481, //!< Color Correction Matrix element [0][2].
414
CAP_PROP_XI_CC_MATRIX_03 = 482, //!< Color Correction Matrix element [0][3].
415
CAP_PROP_XI_CC_MATRIX_10 = 483, //!< Color Correction Matrix element [1][0].
416
CAP_PROP_XI_CC_MATRIX_11 = 484, //!< Color Correction Matrix element [1][1].
417
CAP_PROP_XI_CC_MATRIX_12 = 485, //!< Color Correction Matrix element [1][2].
418
CAP_PROP_XI_CC_MATRIX_13 = 486, //!< Color Correction Matrix element [1][3].
419
CAP_PROP_XI_CC_MATRIX_20 = 487, //!< Color Correction Matrix element [2][0].
420
CAP_PROP_XI_CC_MATRIX_21 = 488, //!< Color Correction Matrix element [2][1].
421
CAP_PROP_XI_CC_MATRIX_22 = 489, //!< Color Correction Matrix element [2][2].
422
CAP_PROP_XI_CC_MATRIX_23 = 490, //!< Color Correction Matrix element [2][3].
423
CAP_PROP_XI_CC_MATRIX_30 = 491, //!< Color Correction Matrix element [3][0].
424
CAP_PROP_XI_CC_MATRIX_31 = 492, //!< Color Correction Matrix element [3][1].
425
CAP_PROP_XI_CC_MATRIX_32 = 493, //!< Color Correction Matrix element [3][2].
426
CAP_PROP_XI_CC_MATRIX_33 = 494, //!< Color Correction Matrix element [3][3].
427
CAP_PROP_XI_DEFAULT_CC_MATRIX = 495, //!< Set default Color Correction Matrix.
428
CAP_PROP_XI_TRG_SELECTOR = 498, //!< Selects the type of trigger.
429
CAP_PROP_XI_ACQ_FRAME_BURST_COUNT = 499, //!< Sets number of frames acquired by burst. This burst is used only if trigger is set to FrameBurstStart.
430
CAP_PROP_XI_DEBOUNCE_EN = 507, //!< Enable/Disable debounce to selected GPI.
431
CAP_PROP_XI_DEBOUNCE_T0 = 508, //!< Debounce time (x * 10us).
432
CAP_PROP_XI_DEBOUNCE_T1 = 509, //!< Debounce time (x * 10us).
433
CAP_PROP_XI_DEBOUNCE_POL = 510, //!< Debounce polarity (pol = 1 t0 - falling edge, t1 - rising edge).
434
CAP_PROP_XI_LENS_MODE = 511, //!< Status of lens control interface. This shall be set to XI_ON before any Lens operations.
435
CAP_PROP_XI_LENS_APERTURE_VALUE = 512, //!< Current lens aperture value in stops. Examples: 2.8, 4, 5.6, 8, 11.
436
CAP_PROP_XI_LENS_FOCUS_MOVEMENT_VALUE = 513, //!< Lens current focus movement value to be used by XI_PRM_LENS_FOCUS_MOVE in motor steps.
437
CAP_PROP_XI_LENS_FOCUS_MOVE = 514, //!< Moves lens focus motor by steps set in XI_PRM_LENS_FOCUS_MOVEMENT_VALUE.
438
CAP_PROP_XI_LENS_FOCUS_DISTANCE = 515, //!< Lens focus distance in cm.
439
CAP_PROP_XI_LENS_FOCAL_LENGTH = 516, //!< Lens focal distance in mm.
440
CAP_PROP_XI_LENS_FEATURE_SELECTOR = 517, //!< Selects the current feature which is accessible by XI_PRM_LENS_FEATURE.
441
CAP_PROP_XI_LENS_FEATURE = 518, //!< Allows access to lens feature value currently selected by XI_PRM_LENS_FEATURE_SELECTOR.
442
CAP_PROP_XI_DEVICE_MODEL_ID = 521, //!< Returns device model id.
443
CAP_PROP_XI_DEVICE_SN = 522, //!< Returns device serial number.
444
CAP_PROP_XI_IMAGE_DATA_FORMAT_RGB32_ALPHA = 529, //!< The alpha channel of RGB32 output image format.
445
CAP_PROP_XI_IMAGE_PAYLOAD_SIZE = 530, //!< Buffer size in bytes sufficient for output image returned by xiGetImage.
446
CAP_PROP_XI_TRANSPORT_PIXEL_FORMAT = 531, //!< Current format of pixels on transport layer.
447
CAP_PROP_XI_SENSOR_CLOCK_FREQ_HZ = 532, //!< Sensor clock frequency in Hz.
448
CAP_PROP_XI_SENSOR_CLOCK_FREQ_INDEX = 533, //!< Sensor clock frequency index. Sensor with selected frequencies have possibility to set the frequency only by this index.
449
CAP_PROP_XI_SENSOR_OUTPUT_CHANNEL_COUNT = 534, //!< Number of output channels from sensor used for data transfer.
450
CAP_PROP_XI_FRAMERATE = 535, //!< Define framerate in Hz.
451
CAP_PROP_XI_COUNTER_SELECTOR = 536, //!< Select counter.
452
CAP_PROP_XI_COUNTER_VALUE = 537, //!< Counter status.
453
CAP_PROP_XI_ACQ_TIMING_MODE = 538, //!< Type of sensor frames timing.
454
CAP_PROP_XI_AVAILABLE_BANDWIDTH = 539, //!< Calculate and returns available interface bandwidth(int Megabits).
455
CAP_PROP_XI_BUFFER_POLICY = 540, //!< Data move policy.
456
CAP_PROP_XI_LUT_EN = 541, //!< Activates LUT.
457
CAP_PROP_XI_LUT_INDEX = 542, //!< Control the index (offset) of the coefficient to access in the LUT.
458
CAP_PROP_XI_LUT_VALUE = 543, //!< Value at entry LUTIndex of the LUT.
459
CAP_PROP_XI_TRG_DELAY = 544, //!< Specifies the delay in microseconds (us) to apply after the trigger reception before activating it.
460
CAP_PROP_XI_TS_RST_MODE = 545, //!< Defines how time stamp reset engine will be armed.
461
CAP_PROP_XI_TS_RST_SOURCE = 546, //!< Defines which source will be used for timestamp reset. Writing this parameter will trigger settings of engine (arming).
462
CAP_PROP_XI_IS_DEVICE_EXIST = 547, //!< Returns 1 if camera connected and works properly.
463
CAP_PROP_XI_ACQ_BUFFER_SIZE = 548, //!< Acquisition buffer size in buffer_size_unit. Default bytes.
464
CAP_PROP_XI_ACQ_BUFFER_SIZE_UNIT = 549, //!< Acquisition buffer size unit in bytes. Default 1. E.g. Value 1024 means that buffer_size is in KiBytes.
465
CAP_PROP_XI_ACQ_TRANSPORT_BUFFER_SIZE = 550, //!< Acquisition transport buffer size in bytes.
466
CAP_PROP_XI_BUFFERS_QUEUE_SIZE = 551, //!< Queue of field/frame buffers.
467
CAP_PROP_XI_ACQ_TRANSPORT_BUFFER_COMMIT = 552, //!< Number of buffers to commit to low level.
468
CAP_PROP_XI_RECENT_FRAME = 553, //!< GetImage returns most recent frame.
469
CAP_PROP_XI_DEVICE_RESET = 554, //!< Resets the camera to default state.
470
CAP_PROP_XI_COLUMN_FPN_CORRECTION = 555, //!< Correction of column FPN.
471
CAP_PROP_XI_ROW_FPN_CORRECTION = 591, //!< Correction of row FPN.
472
CAP_PROP_XI_SENSOR_MODE = 558, //!< Current sensor mode. Allows to select sensor mode by one integer. Setting of this parameter affects: image dimensions and downsampling.
473
CAP_PROP_XI_HDR = 559, //!< Enable High Dynamic Range feature.
474
CAP_PROP_XI_HDR_KNEEPOINT_COUNT = 560, //!< The number of kneepoints in the PWLR.
475
CAP_PROP_XI_HDR_T1 = 561, //!< Position of first kneepoint(in % of XI_PRM_EXPOSURE).
476
CAP_PROP_XI_HDR_T2 = 562, //!< Position of second kneepoint (in % of XI_PRM_EXPOSURE).
477
CAP_PROP_XI_KNEEPOINT1 = 563, //!< Value of first kneepoint (% of sensor saturation).
478
CAP_PROP_XI_KNEEPOINT2 = 564, //!< Value of second kneepoint (% of sensor saturation).
479
CAP_PROP_XI_IMAGE_BLACK_LEVEL = 565, //!< Last image black level counts. Can be used for Offline processing to recall it.
480
CAP_PROP_XI_HW_REVISION = 571, //!< Returns hardware revision number.
481
CAP_PROP_XI_DEBUG_LEVEL = 572, //!< Set debug level.
482
CAP_PROP_XI_AUTO_BANDWIDTH_CALCULATION = 573, //!< Automatic bandwidth calculation.
483
CAP_PROP_XI_FFS_FILE_ID = 594, //!< File number.
484
CAP_PROP_XI_FFS_FILE_SIZE = 580, //!< Size of file.
485
CAP_PROP_XI_FREE_FFS_SIZE = 581, //!< Size of free camera FFS.
486
CAP_PROP_XI_USED_FFS_SIZE = 582, //!< Size of used camera FFS.
487
CAP_PROP_XI_FFS_ACCESS_KEY = 583, //!< Setting of key enables file operations on some cameras.
488
CAP_PROP_XI_SENSOR_FEATURE_SELECTOR = 585, //!< Selects the current feature which is accessible by XI_PRM_SENSOR_FEATURE_VALUE.
489
CAP_PROP_XI_SENSOR_FEATURE_VALUE = 586, //!< Allows access to sensor feature value currently selected by XI_PRM_SENSOR_FEATURE_SELECTOR.
490
};
491
492
//! @} XIMEA
493
494
/** @name AVFoundation framework for iOS
495
OS X Lion will have the same API
496
@{
497
*/
498
499
//! Properties of cameras available through AVFOUNDATION backend
500
enum { CAP_PROP_IOS_DEVICE_FOCUS = 9001,
501
CAP_PROP_IOS_DEVICE_EXPOSURE = 9002,
502
CAP_PROP_IOS_DEVICE_FLASH = 9003,
503
CAP_PROP_IOS_DEVICE_WHITEBALANCE = 9004,
504
CAP_PROP_IOS_DEVICE_TORCH = 9005
505
};
506
507
/** @name Smartek Giganetix GigEVisionSDK
508
@{
509
*/
510
511
//! Properties of cameras available through Smartek Giganetix Ethernet Vision backend
512
/* --- Vladimir Litvinenko ([email protected]) --- */
513
enum { CAP_PROP_GIGA_FRAME_OFFSET_X = 10001,
514
CAP_PROP_GIGA_FRAME_OFFSET_Y = 10002,
515
CAP_PROP_GIGA_FRAME_WIDTH_MAX = 10003,
516
CAP_PROP_GIGA_FRAME_HEIGH_MAX = 10004,
517
CAP_PROP_GIGA_FRAME_SENS_WIDTH = 10005,
518
CAP_PROP_GIGA_FRAME_SENS_HEIGH = 10006
519
};
520
521
//! @} Smartek
522
523
/** @name Intel Perceptual Computing SDK
524
@{
525
*/
526
enum { CAP_PROP_INTELPERC_PROFILE_COUNT = 11001,
527
CAP_PROP_INTELPERC_PROFILE_IDX = 11002,
528
CAP_PROP_INTELPERC_DEPTH_LOW_CONFIDENCE_VALUE = 11003,
529
CAP_PROP_INTELPERC_DEPTH_SATURATION_VALUE = 11004,
530
CAP_PROP_INTELPERC_DEPTH_CONFIDENCE_THRESHOLD = 11005,
531
CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_HORZ = 11006,
532
CAP_PROP_INTELPERC_DEPTH_FOCAL_LENGTH_VERT = 11007
533
};
534
535
//! Intel Perceptual Streams
536
enum { CAP_INTELPERC_DEPTH_GENERATOR = 1 << 29,
537
CAP_INTELPERC_IMAGE_GENERATOR = 1 << 28,
538
CAP_INTELPERC_GENERATORS_MASK = CAP_INTELPERC_DEPTH_GENERATOR + CAP_INTELPERC_IMAGE_GENERATOR
539
};
540
541
enum { CAP_INTELPERC_DEPTH_MAP = 0, //!< Each pixel is a 16-bit integer. The value indicates the distance from an object to the camera's XY plane or the Cartesian depth.
542
CAP_INTELPERC_UVDEPTH_MAP = 1, //!< Each pixel contains two 32-bit floating point values in the range of 0-1, representing the mapping of depth coordinates to the color coordinates.
543
CAP_INTELPERC_IR_MAP = 2, //!< Each pixel is a 16-bit integer. The value indicates the intensity of the reflected laser beam.
544
CAP_INTELPERC_IMAGE = 3
545
};
546
547
//! @} Intel Perceptual
548
549
/** @name gPhoto2 connection
550
@{
551
*/
552
553
/** @brief gPhoto2 properties
554
555
If `propertyId` is less than 0 then work on widget with that __additive inversed__ camera setting ID
556
Get IDs by using CAP_PROP_GPHOTO2_WIDGET_ENUMERATE.
557
@see CvCaptureCAM_GPHOTO2 for more info
558
*/
559
enum { CAP_PROP_GPHOTO2_PREVIEW = 17001, //!< Capture only preview from liveview mode.
560
CAP_PROP_GPHOTO2_WIDGET_ENUMERATE = 17002, //!< Readonly, returns (const char *).
561
CAP_PROP_GPHOTO2_RELOAD_CONFIG = 17003, //!< Trigger, only by set. Reload camera settings.
562
CAP_PROP_GPHOTO2_RELOAD_ON_CHANGE = 17004, //!< Reload all settings on set.
563
CAP_PROP_GPHOTO2_COLLECT_MSGS = 17005, //!< Collect messages with details.
564
CAP_PROP_GPHOTO2_FLUSH_MSGS = 17006, //!< Readonly, returns (const char *).
565
CAP_PROP_SPEED = 17007, //!< Exposure speed. Can be readonly, depends on camera program.
566
CAP_PROP_APERTURE = 17008, //!< Aperture. Can be readonly, depends on camera program.
567
CAP_PROP_EXPOSUREPROGRAM = 17009, //!< Camera exposure program.
568
CAP_PROP_VIEWFINDER = 17010 //!< Enter liveview mode.
569
};
570
571
//! @} gPhoto2
572
573
574
/** @name Images backend
575
@{
576
*/
577
578
/** @brief Images backend properties
579
580
*/
581
enum { CAP_PROP_IMAGES_BASE = 18000,
582
CAP_PROP_IMAGES_LAST = 19000 // excluding
583
};
584
585
//! @} Images
586
587
//! @} videoio_flags_others
588
589
590
class IVideoCapture;
591
592
/** @brief Class for video capturing from video files, image sequences or cameras.
593
594
The class provides C++ API for capturing video from cameras or for reading video files and image sequences.
595
596
Here is how the class can be used:
597
@include samples/cpp/videocapture_basic.cpp
598
599
@note In @ref videoio_c "C API" the black-box structure `CvCapture` is used instead of %VideoCapture.
600
@note
601
- (C++) A basic sample on using the %VideoCapture interface can be found at
602
`OPENCV_SOURCE_CODE/samples/cpp/videocapture_starter.cpp`
603
- (Python) A basic sample on using the %VideoCapture interface can be found at
604
`OPENCV_SOURCE_CODE/samples/python/video.py`
605
- (Python) A multi threaded video processing sample can be found at
606
`OPENCV_SOURCE_CODE/samples/python/video_threaded.py`
607
- (Python) %VideoCapture sample showcasing some features of the Video4Linux2 backend
608
`OPENCV_SOURCE_CODE/samples/python/video_v4l2.py`
609
*/
610
class CV_EXPORTS_W VideoCapture
611
{
612
public:
613
/** @brief Default constructor
614
@note In @ref videoio_c "C API", when you finished working with video, release CvCapture structure with
615
cvReleaseCapture(), or use Ptr\<CvCapture\> that calls cvReleaseCapture() automatically in the
616
destructor.
617
*/
618
CV_WRAP VideoCapture();
619
620
/** @overload
621
@brief Opens a video file or a capturing device or an IP video stream for video capturing with API Preference
622
623
@param filename it can be:
624
- name of video file (eg. `video.avi`)
625
- or image sequence (eg. `img_%02d.jpg`, which will read samples like `img_00.jpg, img_01.jpg, img_02.jpg, ...`)
626
- or URL of video stream (eg. `protocol://host:port/script_name?script_params|auth`).
627
Note that each video stream or IP camera feed has its own URL scheme. Please refer to the
628
documentation of source stream to know the right URL.
629
@param apiPreference preferred Capture API backends to use. Can be used to enforce a specific reader
630
implementation if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_IMAGES or cv::CAP_DSHOW.
631
@sa The list of supported API backends cv::VideoCaptureAPIs
632
*/
633
CV_WRAP VideoCapture(const String& filename, int apiPreference = CAP_ANY);
634
635
/** @overload
636
@brief Opens a camera for video capturing
637
638
@param index id of the video capturing device to open. To open default camera using default backend just pass 0.
639
(to backward compatibility usage of camera_id + domain_offset (CAP_*) is valid when apiPreference is CAP_ANY)
640
@param apiPreference preferred Capture API backends to use. Can be used to enforce a specific reader
641
implementation if multiple are available: e.g. cv::CAP_DSHOW or cv::CAP_MSMF or cv::CAP_V4L.
642
643
@sa The list of supported API backends cv::VideoCaptureAPIs
644
*/
645
CV_WRAP VideoCapture(int index, int apiPreference = CAP_ANY);
646
647
/** @brief Default destructor
648
649
The method first calls VideoCapture::release to close the already opened file or camera.
650
*/
651
virtual ~VideoCapture();
652
653
/** @brief Opens a video file or a capturing device or an IP video stream for video capturing.
654
655
@overload
656
657
Parameters are same as the constructor VideoCapture(const String& filename, int apiPreference = CAP_ANY)
658
@return `true` if the file has been successfully opened
659
660
The method first calls VideoCapture::release to close the already opened file or camera.
661
*/
662
CV_WRAP virtual bool open(const String& filename, int apiPreference = CAP_ANY);
663
664
/** @brief Opens a camera for video capturing
665
666
@overload
667
668
Parameters are same as the constructor VideoCapture(int index, int apiPreference = CAP_ANY)
669
@return `true` if the camera has been successfully opened.
670
671
The method first calls VideoCapture::release to close the already opened file or camera.
672
*/
673
CV_WRAP virtual bool open(int index, int apiPreference = CAP_ANY);
674
675
/** @brief Returns true if video capturing has been initialized already.
676
677
If the previous call to VideoCapture constructor or VideoCapture::open() succeeded, the method returns
678
true.
679
*/
680
CV_WRAP virtual bool isOpened() const;
681
682
/** @brief Closes video file or capturing device.
683
684
The method is automatically called by subsequent VideoCapture::open and by VideoCapture
685
destructor.
686
687
The C function also deallocates memory and clears \*capture pointer.
688
*/
689
CV_WRAP virtual void release();
690
691
/** @brief Grabs the next frame from video file or capturing device.
692
693
@return `true` (non-zero) in the case of success.
694
695
The method/function grabs the next frame from video file or camera and returns true (non-zero) in
696
the case of success.
697
698
The primary use of the function is in multi-camera environments, especially when the cameras do not
699
have hardware synchronization. That is, you call VideoCapture::grab() for each camera and after that
700
call the slower method VideoCapture::retrieve() to decode and get frame from each camera. This way
701
the overhead on demosaicing or motion jpeg decompression etc. is eliminated and the retrieved frames
702
from different cameras will be closer in time.
703
704
Also, when a connected camera is multi-head (for example, a stereo camera or a Kinect device), the
705
correct way of retrieving data from it is to call VideoCapture::grab() first and then call
706
VideoCapture::retrieve() one or more times with different values of the channel parameter.
707
708
@ref tutorial_kinect_openni
709
*/
710
CV_WRAP virtual bool grab();
711
712
/** @brief Decodes and returns the grabbed video frame.
713
714
@param [out] image the video frame is returned here. If no frames has been grabbed the image will be empty.
715
@param flag it could be a frame index or a driver specific flag
716
@return `false` if no frames has been grabbed
717
718
The method decodes and returns the just grabbed frame. If no frames has been grabbed
719
(camera has been disconnected, or there are no more frames in video file), the method returns false
720
and the function returns an empty image (with %cv::Mat, test it with Mat::empty()).
721
722
@sa read()
723
724
@note In @ref videoio_c "C API", functions cvRetrieveFrame() and cv.RetrieveFrame() return image stored inside the video
725
capturing structure. It is not allowed to modify or release the image! You can copy the frame using
726
cvCloneImage and then do whatever you want with the copy.
727
*/
728
CV_WRAP virtual bool retrieve(OutputArray image, int flag = 0);
729
730
/** @brief Stream operator to read the next video frame.
731
@sa read()
732
*/
733
virtual VideoCapture& operator >> (CV_OUT Mat& image);
734
735
/** @overload
736
@sa read()
737
*/
738
virtual VideoCapture& operator >> (CV_OUT UMat& image);
739
740
/** @brief Grabs, decodes and returns the next video frame.
741
742
@param [out] image the video frame is returned here. If no frames has been grabbed the image will be empty.
743
@return `false` if no frames has been grabbed
744
745
The method/function combines VideoCapture::grab() and VideoCapture::retrieve() in one call. This is the
746
most convenient method for reading video files or capturing data from decode and returns the just
747
grabbed frame. If no frames has been grabbed (camera has been disconnected, or there are no more
748
frames in video file), the method returns false and the function returns empty image (with %cv::Mat, test it with Mat::empty()).
749
750
@note In @ref videoio_c "C API", functions cvRetrieveFrame() and cv.RetrieveFrame() return image stored inside the video
751
capturing structure. It is not allowed to modify or release the image! You can copy the frame using
752
cvCloneImage and then do whatever you want with the copy.
753
*/
754
CV_WRAP virtual bool read(OutputArray image);
755
756
/** @brief Sets a property in the VideoCapture.
757
758
@param propId Property identifier from cv::VideoCaptureProperties (eg. cv::CAP_PROP_POS_MSEC, cv::CAP_PROP_POS_FRAMES, ...)
759
or one from @ref videoio_flags_others
760
@param value Value of the property.
761
@return `true` if the property is supported by backend used by the VideoCapture instance.
762
@note Even if it returns `true` this doesn't ensure that the property
763
value has been accepted by the capture device. See note in VideoCapture::get()
764
*/
765
CV_WRAP virtual bool set(int propId, double value);
766
767
/** @brief Returns the specified VideoCapture property
768
769
@param propId Property identifier from cv::VideoCaptureProperties (eg. cv::CAP_PROP_POS_MSEC, cv::CAP_PROP_POS_FRAMES, ...)
770
or one from @ref videoio_flags_others
771
@return Value for the specified property. Value 0 is returned when querying a property that is
772
not supported by the backend used by the VideoCapture instance.
773
774
@note Reading / writing properties involves many layers. Some unexpected result might happens
775
along this chain.
776
@code {.txt}
777
`VideoCapture -> API Backend -> Operating System -> Device Driver -> Device Hardware`
778
@endcode
779
The returned value might be different from what really used by the device or it could be encoded
780
using device dependent rules (eg. steps or percentage). Effective behaviour depends from device
781
driver and API Backend
782
783
*/
784
CV_WRAP virtual double get(int propId) const;
785
786
/** @brief Returns used backend API name
787
788
@note Stream should be opened.
789
*/
790
CV_WRAP String getBackendName() const;
791
792
protected:
793
Ptr<CvCapture> cap;
794
Ptr<IVideoCapture> icap;
795
};
796
797
class IVideoWriter;
798
799
/** @example samples/cpp/tutorial_code/videoio/video-write/video-write.cpp
800
Check @ref tutorial_video_write "the corresponding tutorial" for more details
801
*/
802
803
/** @example samples/cpp/videowriter_basic.cpp
804
An example using VideoCapture and VideoWriter class
805
*/
806
807
/** @brief Video writer class.
808
809
The class provides C++ API for writing video files or image sequences.
810
*/
811
class CV_EXPORTS_W VideoWriter
812
{
813
public:
814
/** @brief Default constructors
815
816
The constructors/functions initialize video writers.
817
- On Linux FFMPEG is used to write videos;
818
- On Windows FFMPEG or VFW is used;
819
- On MacOSX QTKit is used.
820
*/
821
CV_WRAP VideoWriter();
822
823
/** @overload
824
@param filename Name of the output video file.
825
@param fourcc 4-character code of codec used to compress the frames. For example,
826
VideoWriter::fourcc('P','I','M','1') is a MPEG-1 codec, VideoWriter::fourcc('M','J','P','G') is a
827
motion-jpeg codec etc. List of codes can be obtained at [Video Codecs by
828
FOURCC](http://www.fourcc.org/codecs.php) page. FFMPEG backend with MP4 container natively uses
829
other values as fourcc code: see [ObjectType](http://www.mp4ra.org/codecs.html),
830
so you may receive a warning message from OpenCV about fourcc code conversion.
831
@param fps Framerate of the created video stream.
832
@param frameSize Size of the video frames.
833
@param isColor If it is not zero, the encoder will expect and encode color frames, otherwise it
834
will work with grayscale frames (the flag is currently supported on Windows only).
835
836
@b Tips:
837
- With some backends `fourcc=-1` pops up the codec selection dialog from the system.
838
- To save image sequence use a proper filename (eg. `img_%02d.jpg`) and `fourcc=0`
839
OR `fps=0`. Use uncompressed image format (eg. `img_%02d.BMP`) to save raw frames.
840
- Most codecs are lossy. If you want lossless video file you need to use a lossless codecs
841
(eg. FFMPEG FFV1, Huffman HFYU, Lagarith LAGS, etc...)
842
- If FFMPEG is enabled, using `codec=0; fps=0;` you can create an uncompressed (raw) video file.
843
*/
844
CV_WRAP VideoWriter(const String& filename, int fourcc, double fps,
845
Size frameSize, bool isColor = true);
846
847
/** @overload
848
The `apiPreference` parameter allows to specify API backends to use. Can be used to enforce a specific reader implementation
849
if multiple are available: e.g. cv::CAP_FFMPEG or cv::CAP_GSTREAMER.
850
*/
851
CV_WRAP VideoWriter(const String& filename, int apiPreference, int fourcc, double fps,
852
Size frameSize, bool isColor = true);
853
854
/** @brief Default destructor
855
856
The method first calls VideoWriter::release to close the already opened file.
857
*/
858
virtual ~VideoWriter();
859
860
/** @brief Initializes or reinitializes video writer.
861
862
The method opens video writer. Parameters are the same as in the constructor
863
VideoWriter::VideoWriter.
864
@return `true` if video writer has been successfully initialized
865
866
The method first calls VideoWriter::release to close the already opened file.
867
*/
868
CV_WRAP virtual bool open(const String& filename, int fourcc, double fps,
869
Size frameSize, bool isColor = true);
870
871
/** @overload
872
*/
873
CV_WRAP bool open(const String& filename, int apiPreference, int fourcc, double fps,
874
Size frameSize, bool isColor = true);
875
876
/** @brief Returns true if video writer has been successfully initialized.
877
*/
878
CV_WRAP virtual bool isOpened() const;
879
880
/** @brief Closes the video writer.
881
882
The method is automatically called by subsequent VideoWriter::open and by the VideoWriter
883
destructor.
884
*/
885
CV_WRAP virtual void release();
886
887
/** @brief Stream operator to write the next video frame.
888
@sa write
889
*/
890
virtual VideoWriter& operator << (const Mat& image);
891
892
/** @overload
893
@sa write
894
*/
895
virtual VideoWriter& operator << (const UMat& image);
896
897
/** @brief Writes the next video frame
898
899
@param image The written frame. In general, color images are expected in BGR format.
900
901
The function/method writes the specified image to video file. It must have the same size as has
902
been specified when opening the video writer.
903
*/
904
CV_WRAP virtual void write(InputArray image);
905
906
/** @brief Sets a property in the VideoWriter.
907
908
@param propId Property identifier from cv::VideoWriterProperties (eg. cv::VIDEOWRITER_PROP_QUALITY)
909
or one of @ref videoio_flags_others
910
911
@param value Value of the property.
912
@return `true` if the property is supported by the backend used by the VideoWriter instance.
913
*/
914
CV_WRAP virtual bool set(int propId, double value);
915
916
/** @brief Returns the specified VideoWriter property
917
918
@param propId Property identifier from cv::VideoWriterProperties (eg. cv::VIDEOWRITER_PROP_QUALITY)
919
or one of @ref videoio_flags_others
920
921
@return Value for the specified property. Value 0 is returned when querying a property that is
922
not supported by the backend used by the VideoWriter instance.
923
*/
924
CV_WRAP virtual double get(int propId) const;
925
926
/** @brief Concatenates 4 chars to a fourcc code
927
928
@return a fourcc code
929
930
This static method constructs the fourcc code of the codec to be used in the constructor
931
VideoWriter::VideoWriter or VideoWriter::open.
932
*/
933
CV_WRAP static int fourcc(char c1, char c2, char c3, char c4);
934
935
/** @brief Returns used backend API name
936
937
@note Stream should be opened.
938
*/
939
CV_WRAP String getBackendName() const;
940
941
protected:
942
Ptr<CvVideoWriter> writer;
943
Ptr<IVideoWriter> iwriter;
944
945
static Ptr<IVideoWriter> create(const String& filename, int fourcc, double fps,
946
Size frameSize, bool isColor = true);
947
};
948
949
template<> struct DefaultDeleter<CvCapture>{ CV_EXPORTS void operator ()(CvCapture* obj) const; };
950
template<> struct DefaultDeleter<CvVideoWriter>{ CV_EXPORTS void operator ()(CvVideoWriter* obj) const; };
951
952
//! @} videoio
953
954
} // cv
955
956
#endif //OPENCV_VIDEOIO_HPP
957
958