Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
dcae7698
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
dcae7698
编写于
11月 19, 2014
作者:
M
Maksim Shabunin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Doxygen documentation for: highgui, video, imgcodecs and videoio
上级
1f43999f
变更
12
展开全部
显示空白变更内容
内联
并排
Showing
12 changed file
with
1386 addition
and
54 deletion
+1386
-54
modules/highgui/include/opencv2/highgui.hpp
modules/highgui/include/opencv2/highgui.hpp
+474
-2
modules/highgui/include/opencv2/highgui/highgui_c.h
modules/highgui/include/opencv2/highgui/highgui_c.h
+6
-0
modules/imgcodecs/include/opencv2/imgcodecs.hpp
modules/imgcodecs/include/opencv2/imgcodecs.hpp
+158
-0
modules/imgcodecs/include/opencv2/imgcodecs/imgcodecs_c.h
modules/imgcodecs/include/opencv2/imgcodecs/imgcodecs_c.h
+5
-0
modules/imgcodecs/include/opencv2/imgcodecs/ios.h
modules/imgcodecs/include/opencv2/imgcodecs/ios.h
+5
-0
modules/video/include/opencv2/video.hpp
modules/video/include/opencv2/video.hpp
+9
-0
modules/video/include/opencv2/video/background_segm.hpp
modules/video/include/opencv2/video/background_segm.hpp
+167
-22
modules/video/include/opencv2/video/tracking.hpp
modules/video/include/opencv2/video/tracking.hpp
+309
-30
modules/video/include/opencv2/video/tracking_c.h
modules/video/include/opencv2/video/tracking_c.h
+5
-0
modules/videoio/include/opencv2/videoio.hpp
modules/videoio/include/opencv2/videoio.hpp
+237
-0
modules/videoio/include/opencv2/videoio/cap_ios.h
modules/videoio/include/opencv2/videoio/cap_ios.h
+6
-0
modules/videoio/include/opencv2/videoio/videoio_c.h
modules/videoio/include/opencv2/videoio/videoio_c.h
+5
-0
未找到文件。
modules/highgui/include/opencv2/highgui.hpp
浏览文件 @
dcae7698
此差异已折叠。
点击以展开。
modules/highgui/include/opencv2/highgui/highgui_c.h
浏览文件 @
dcae7698
...
...
@@ -51,6 +51,10 @@
extern
"C"
{
#endif
/* __cplusplus */
/** @addtogroup highgui_c
@{
*/
/****************************************************************************************\
* Basic GUI functions *
\****************************************************************************************/
...
...
@@ -237,6 +241,8 @@ CVAPI(void) cvSetPostprocessFuncWin32_(const void* callback);
#endif
/** @} highgui_c */
#ifdef __cplusplus
}
#endif
...
...
modules/imgcodecs/include/opencv2/imgcodecs.hpp
浏览文件 @
dcae7698
...
...
@@ -45,10 +45,21 @@
#include "opencv2/core.hpp"
/**
@defgroup imgcodecs Image file reading and writing
@{
@defgroup imgcodecs_c C API
@defgroup imgcodecs_ios iOS glue
@}
*/
//////////////////////////////// image codec ////////////////////////////////
namespace
cv
{
//! @addtogroup imgcodecs
//! @{
enum
{
IMREAD_UNCHANGED
=
-
1
,
// 8bit, color or not
IMREAD_GRAYSCALE
=
0
,
// 8bit, gray
IMREAD_COLOR
=
1
,
// ?, color
...
...
@@ -77,19 +88,166 @@ enum { IMWRITE_PNG_STRATEGY_DEFAULT = 0,
IMWRITE_PNG_STRATEGY_FIXED
=
4
};
/** @brief Loads an image from a file.
@param filename Name of file to be loaded.
@param flags Flags specifying the color type of a loaded image:
- CV\_LOAD\_IMAGE\_ANYDEPTH - If set, return 16-bit/32-bit image when the input has the
corresponding depth, otherwise convert it to 8-bit.
- CV\_LOAD\_IMAGE\_COLOR - If set, always convert image to the color one
- CV\_LOAD\_IMAGE\_GRAYSCALE - If set, always convert image to the grayscale one
- **\>0** Return a 3-channel color image.
@note In the current implementation the alpha channel, if any, is stripped from the output image.
Use negative value if you need the alpha channel.
- **=0** Return a grayscale image.
- **\<0** Return the loaded image as is (with alpha channel).
The function imread loads an image from the specified file and returns it. If the image cannot be
read (because of missing file, improper permissions, unsupported or invalid format), the function
returns an empty matrix ( Mat::data==NULL ). Currently, the following file formats are supported:
- Windows bitmaps - \*.bmp, \*.dib (always supported)
- JPEG files - \*.jpeg, \*.jpg, \*.jpe (see the *Notes* section)
- JPEG 2000 files - \*.jp2 (see the *Notes* section)
- Portable Network Graphics - \*.png (see the *Notes* section)
- WebP - \*.webp (see the *Notes* section)
- Portable image format - \*.pbm, \*.pgm, \*.ppm (always supported)
- Sun rasters - \*.sr, \*.ras (always supported)
- TIFF files - \*.tiff, \*.tif (see the *Notes* section)
@note
- The function determines the type of an image by the content, not by the file extension.
- On Microsoft Windows\* OS and MacOSX\*, the codecs shipped with an OpenCV image (libjpeg,
libpng, libtiff, and libjasper) are used by default. So, OpenCV can always read JPEGs, PNGs,
and TIFFs. On MacOSX, there is also an option to use native MacOSX image readers. But beware
that currently these native image loaders give images with different pixel values because of
the color management embedded into MacOSX.
- On Linux\*, BSD flavors and other Unix-like open-source operating systems, OpenCV looks for
codecs supplied with an OS image. Install the relevant packages (do not forget the development
files, for example, "libjpeg-dev", in Debian\* and Ubuntu\*) to get the codec support or turn
on the OPENCV\_BUILD\_3RDPARTY\_LIBS flag in CMake.
@note In the case of color images, the decoded images will have the channels stored in B G R order.
*/
CV_EXPORTS_W
Mat
imread
(
const
String
&
filename
,
int
flags
=
IMREAD_COLOR
);
/** @brief Saves an image to a specified file.
@param filename Name of the file.
@param img Image to be saved.
@param params Format-specific save parameters encoded as pairs
paramId\_1, paramValue\_1, paramId\_2, paramValue\_2, ... . The following parameters are currently
supported:
- For JPEG, it can be a quality ( CV\_IMWRITE\_JPEG\_QUALITY ) from 0 to 100 (the higher is
the better). Default value is 95.
- For WEBP, it can be a quality ( CV\_IMWRITE\_WEBP\_QUALITY ) from 1 to 100 (the higher is
the better). By default (without any parameter) and for quality above 100 the lossless
compression is used.
- For PNG, it can be the compression level ( CV\_IMWRITE\_PNG\_COMPRESSION ) from 0 to 9. A
higher value means a smaller size and longer compression time. Default value is 3.
- For PPM, PGM, or PBM, it can be a binary format flag ( CV\_IMWRITE\_PXM\_BINARY ), 0 or 1.
Default value is 1.
The function imwrite saves the image to the specified file. The image format is chosen based on the
filename extension (see imread for the list of extensions). Only 8-bit (or 16-bit unsigned (CV\_16U)
in case of PNG, JPEG 2000, and TIFF) single-channel or 3-channel (with 'BGR' channel order) images
can be saved using this function. If the format, depth or channel order is different, use
Mat::convertTo , and cvtColor to convert it before saving. Or, use the universal FileStorage I/O
functions to save the image to XML or YAML format.
It is possible to store PNG images with an alpha channel using this function. To do this, create
8-bit (or 16-bit) 4-channel image BGRA, where the alpha channel goes last. Fully transparent pixels
should have alpha set to 0, fully opaque pixels should have alpha set to 255/65535. The sample below
shows how to create such a BGRA image and store to PNG file. It also demonstrates how to set custom
compression parameters :
@code
#include <vector>
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
void createAlphaMat(Mat &mat)
{
for (int i = 0; i < mat.rows; ++i) {
for (int j = 0; j < mat.cols; ++j) {
Vec4b& rgba = mat.at<Vec4b>(i, j);
rgba[0] = UCHAR_MAX;
rgba[1] = saturate_cast<uchar>((float (mat.cols - j)) / ((float)mat.cols) * UCHAR_MAX);
rgba[2] = saturate_cast<uchar>((float (mat.rows - i)) / ((float)mat.rows) * UCHAR_MAX);
rgba[3] = saturate_cast<uchar>(0.5 * (rgba[1] + rgba[2]));
}
}
}
int main(int argv, char **argc)
{
// Create mat with alpha channel
Mat mat(480, 640, CV_8UC4);
createAlphaMat(mat);
vector<int> compression_params;
compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION);
compression_params.push_back(9);
try {
imwrite("alpha.png", mat, compression_params);
}
catch (runtime_error& ex) {
fprintf(stderr, "Exception converting image to PNG format: %s\n", ex.what());
return 1;
}
fprintf(stdout, "Saved PNG file with alpha data.\n");
return 0;
}
@endcode
*/
CV_EXPORTS_W
bool
imwrite
(
const
String
&
filename
,
InputArray
img
,
const
std
::
vector
<
int
>&
params
=
std
::
vector
<
int
>
());
/** @overload */
CV_EXPORTS_W
Mat
imdecode
(
InputArray
buf
,
int
flags
);
/** @brief Reads an image from a buffer in memory.
@param buf Input array or vector of bytes.
@param flags The same flags as in imread .
@param dst The optional output placeholder for the decoded matrix. It can save the image
reallocations when the function is called repeatedly for images of the same size.
The function reads an image from the specified buffer in the memory. If the buffer is too short or
contains invalid data, the empty matrix/image is returned.
See imread for the list of supported formats and flags description.
@note In the case of color images, the decoded images will have the channels stored in B G R order.
*/
CV_EXPORTS
Mat
imdecode
(
InputArray
buf
,
int
flags
,
Mat
*
dst
);
/** @brief Encodes an image into a memory buffer.
@param ext File extension that defines the output format.
@param img Image to be written.
@param buf Output buffer resized to fit the compressed image.
@param params Format-specific parameters. See imwrite .
The function compresses the image and stores it in the memory buffer that is resized to fit the
result. See imwrite for the list of supported formats and flags description.
@note cvEncodeImage returns single-row matrix of type CV\_8UC1 that contains encoded image as array
of bytes.
*/
CV_EXPORTS_W
bool
imencode
(
const
String
&
ext
,
InputArray
img
,
CV_OUT
std
::
vector
<
uchar
>&
buf
,
const
std
::
vector
<
int
>&
params
=
std
::
vector
<
int
>
());
//! @} imgcodecs
}
// cv
#endif //__OPENCV_IMGCODECS_HPP__
modules/imgcodecs/include/opencv2/imgcodecs/imgcodecs_c.h
浏览文件 @
dcae7698
...
...
@@ -48,6 +48,10 @@
extern
"C"
{
#endif
/* __cplusplus */
/** @addtogroup imgcodecs_c
@{
*/
enum
{
/* 8bit, color or not */
...
...
@@ -124,6 +128,7 @@ CVAPI(int) cvHaveImageWriter(const char* filename);
#define cvvSaveImage cvSaveImage
#define cvvConvertImage cvConvertImage
/** @} imgcodecs_c */
#ifdef __cplusplus
}
...
...
modules/imgcodecs/include/opencv2/imgcodecs/ios.h
浏览文件 @
dcae7698
...
...
@@ -47,6 +47,11 @@
#import <ImageIO/ImageIO.h>
#include "opencv2/core/core.hpp"
//! @addtogroup imgcodecs_ios
//! @{
UIImage
*
MatToUIImage
(
const
cv
::
Mat
&
image
);
void
UIImageToMat
(
const
UIImage
*
image
,
cv
::
Mat
&
m
,
bool
alphaExist
=
false
);
//! @}
modules/video/include/opencv2/video.hpp
浏览文件 @
dcae7698
...
...
@@ -44,6 +44,15 @@
#ifndef __OPENCV_VIDEO_HPP__
#define __OPENCV_VIDEO_HPP__
/**
@defgroup video Video Analysis
@{
@defgroup video_motion Motion Analysis
@defgroup video_track Object Tracking
@defgroup video_c C API
@}
*/
#include "opencv2/video/tracking.hpp"
#include "opencv2/video/background_segm.hpp"
...
...
modules/video/include/opencv2/video/background_segm.hpp
浏览文件 @
dcae7698
...
...
@@ -49,49 +49,102 @@
namespace
cv
{
/
*!
The Base Class for Background/Foreground Segmentation
/
/! @addtogroup video_motion
//! @{
The class is only used to define the common interface for
the whole family of background/foreground segmentation algorithms.
*/
/** @brief Base class for background/foreground segmentation. :
The class is only used to define the common interface for the whole family of background/foreground
segmentation algorithms.
*/
class
CV_EXPORTS_W
BackgroundSubtractor
:
public
Algorithm
{
public:
//! the update operator that takes the next video frame and returns the current foreground mask as 8-bit binary image.
/** @brief Computes a foreground mask.
@param image Next video frame.
@param fgmask The output foreground mask as an 8-bit binary image.
@param learningRate The value between 0 and 1 that indicates how fast the background model is
learnt. Negative parameter value makes the algorithm to use some automatically chosen learning
rate. 0 means that the background model is not updated at all, 1 means that the background model
is completely reinitialized from the last frame.
*/
CV_WRAP
virtual
void
apply
(
InputArray
image
,
OutputArray
fgmask
,
double
learningRate
=-
1
)
=
0
;
//! computes a background image
/** @brief Computes a background image.
@param backgroundImage The output background image.
@note Sometimes the background image can be very blurry, as it contain the average background
statistics.
*/
CV_WRAP
virtual
void
getBackgroundImage
(
OutputArray
backgroundImage
)
const
=
0
;
};
/*!
The class implements the following algorithm:
"Improved adaptive Gausian mixture model for background subtraction"
Z.Zivkovic
International Conference Pattern Recognition, UK, August, 2004.
http://www.zoranz.net/Publications/zivkovic2004ICPR.pdf
/** @brief Gaussian Mixture-based Background/Foreground Segmentation Algorithm.
The class implements the Gaussian mixture model background subtraction described in @cite Zivkovic2004
and @cite Zivkovic2006 .
*/
class
CV_EXPORTS_W
BackgroundSubtractorMOG2
:
public
BackgroundSubtractor
{
public:
/** @brief Returns the number of last frames that affect the background model
*/
CV_WRAP
virtual
int
getHistory
()
const
=
0
;
/** @brief Sets the number of last frames that affect the background model
*/
CV_WRAP
virtual
void
setHistory
(
int
history
)
=
0
;
/** @brief Returns the number of gaussian components in the background model
*/
CV_WRAP
virtual
int
getNMixtures
()
const
=
0
;
/** @brief Sets the number of gaussian components in the background model.
The model needs to be reinitalized to reserve memory.
*/
CV_WRAP
virtual
void
setNMixtures
(
int
nmixtures
)
=
0
;
//needs reinitialization!
/** @brief Returns the "background ratio" parameter of the algorithm
If a foreground pixel keeps semi-constant value for about backgroundRatio\*history frames, it's
considered background and added to the model as a center of a new component. It corresponds to TB
parameter in the paper.
*/
CV_WRAP
virtual
double
getBackgroundRatio
()
const
=
0
;
/** @brief Sets the "background ratio" parameter of the algorithm
*/
CV_WRAP
virtual
void
setBackgroundRatio
(
double
ratio
)
=
0
;
/** @brief Returns the variance threshold for the pixel-model match
The main threshold on the squared Mahalanobis distance to decide if the sample is well described by
the background model or not. Related to Cthr from the paper.
*/
CV_WRAP
virtual
double
getVarThreshold
()
const
=
0
;
/** @brief Sets the variance threshold for the pixel-model match
*/
CV_WRAP
virtual
void
setVarThreshold
(
double
varThreshold
)
=
0
;
/** @brief Returns the variance threshold for the pixel-model match used for new mixture component generation
Threshold for the squared Mahalanobis distance that helps decide when a sample is close to the
existing components (corresponds to Tg in the paper). If a pixel is not close to any component, it
is considered foreground or added as a new component. 3 sigma =\> Tg=3\*3=9 is default. A smaller Tg
value generates more components. A higher Tg value may result in a small number of components but
they can grow too large.
*/
CV_WRAP
virtual
double
getVarThresholdGen
()
const
=
0
;
/** @brief Sets the variance threshold for the pixel-model match used for new mixture component generation
*/
CV_WRAP
virtual
void
setVarThresholdGen
(
double
varThresholdGen
)
=
0
;
/** @brief Returns the initial variance of each gaussian component
*/
CV_WRAP
virtual
double
getVarInit
()
const
=
0
;
/** @brief Sets the initial variance of each gaussian component
*/
CV_WRAP
virtual
void
setVarInit
(
double
varInit
)
=
0
;
CV_WRAP
virtual
double
getVarMin
()
const
=
0
;
...
...
@@ -100,62 +153,154 @@ public:
CV_WRAP
virtual
double
getVarMax
()
const
=
0
;
CV_WRAP
virtual
void
setVarMax
(
double
varMax
)
=
0
;
/** @brief Returns the complexity reduction threshold
This parameter defines the number of samples needed to accept to prove the component exists. CT=0.05
is a default value for all the samples. By setting CT=0 you get an algorithm very similar to the
standard Stauffer&Grimson algorithm.
*/
CV_WRAP
virtual
double
getComplexityReductionThreshold
()
const
=
0
;
/** @brief Sets the complexity reduction threshold
*/
CV_WRAP
virtual
void
setComplexityReductionThreshold
(
double
ct
)
=
0
;
/** @brief Returns the shadow detection flag
If true, the algorithm detects shadows and marks them. See createBackgroundSubtractorMOG2 for
details.
*/
CV_WRAP
virtual
bool
getDetectShadows
()
const
=
0
;
/** @brief Enables or disables shadow detection
*/
CV_WRAP
virtual
void
setDetectShadows
(
bool
detectShadows
)
=
0
;
/** @brief Returns the shadow value
Shadow value is the value used to mark shadows in the foreground mask. Default value is 127. Value 0
in the mask always means background, 255 means foreground.
*/
CV_WRAP
virtual
int
getShadowValue
()
const
=
0
;
/** @brief Sets the shadow value
*/
CV_WRAP
virtual
void
setShadowValue
(
int
value
)
=
0
;
/** @brief Returns the shadow threshold
A shadow is detected if pixel is a darker version of the background. The shadow threshold (Tau in
the paper) is a threshold defining how much darker the shadow can be. Tau= 0.5 means that if a pixel
is more than twice darker then it is not shadow. See Prati, Mikic, Trivedi and Cucchiarra,
*Detecting Moving Shadows...*, IEEE PAMI,2003.
*/
CV_WRAP
virtual
double
getShadowThreshold
()
const
=
0
;
/** @brief Sets the shadow threshold
*/
CV_WRAP
virtual
void
setShadowThreshold
(
double
threshold
)
=
0
;
};
/** @brief Creates MOG2 Background Subtractor
@param history Length of the history.
@param varThreshold Threshold on the squared Mahalanobis distance between the pixel and the model
to decide whether a pixel is well described by the background model. This parameter does not
affect the background update.
@param detectShadows If true, the algorithm will detect shadows and mark them. It decreases the
speed a bit, so if you do not need this feature, set the parameter to false.
*/
CV_EXPORTS_W
Ptr
<
BackgroundSubtractorMOG2
>
createBackgroundSubtractorMOG2
(
int
history
=
500
,
double
varThreshold
=
16
,
bool
detectShadows
=
true
);
/*!
The class implements the K nearest neigbours algorithm from:
"Efficient Adaptive Density Estimation per Image Pixel for the Task of Background Subtraction"
Z.Zivkovic, F. van der Heijden
Pattern Recognition Letters, vol. 27, no. 7, pages 773-780, 2006
http://www.zoranz.net/Publications/zivkovicPRL2006.pdf
Fast for small foreground object. Results on the benchmark data is at http://www.changedetection.net.
*/
/** @brief K-nearest neigbours - based Background/Foreground Segmentation Algorithm.
The class implements the K-nearest neigbours background subtraction described in @cite Zivkovic2006 .
Very efficient if number of foreground pixels is low.
*/
class
CV_EXPORTS_W
BackgroundSubtractorKNN
:
public
BackgroundSubtractor
{
public:
/** @brief Returns the number of last frames that affect the background model
*/
CV_WRAP
virtual
int
getHistory
()
const
=
0
;
/** @brief Sets the number of last frames that affect the background model
*/
CV_WRAP
virtual
void
setHistory
(
int
history
)
=
0
;
/** @brief Returns the number of data samples in the background model
*/
CV_WRAP
virtual
int
getNSamples
()
const
=
0
;
/** @brief Sets the number of data samples in the background model.
The model needs to be reinitalized to reserve memory.
*/
CV_WRAP
virtual
void
setNSamples
(
int
_nN
)
=
0
;
//needs reinitialization!
/** @brief Returns the threshold on the squared distance between the pixel and the sample
The threshold on the squared distance between the pixel and the sample to decide whether a pixel is
close to a data sample.
*/
CV_WRAP
virtual
double
getDist2Threshold
()
const
=
0
;
/** @brief Sets the threshold on the squared distance
*/
CV_WRAP
virtual
void
setDist2Threshold
(
double
_dist2Threshold
)
=
0
;
/** @brief Returns the number of neighbours, the k in the kNN.
K is the number of samples that need to be within dist2Threshold in order to decide that that
pixel is matching the kNN background model.
*/
CV_WRAP
virtual
int
getkNNSamples
()
const
=
0
;
/** @brief Sets the k in the kNN. How many nearest neigbours need to match.
*/
CV_WRAP
virtual
void
setkNNSamples
(
int
_nkNN
)
=
0
;
/** @brief Returns the shadow detection flag
If true, the algorithm detects shadows and marks them. See createBackgroundSubtractorKNN for
details.
*/
CV_WRAP
virtual
bool
getDetectShadows
()
const
=
0
;
/** @brief Enables or disables shadow detection
*/
CV_WRAP
virtual
void
setDetectShadows
(
bool
detectShadows
)
=
0
;
/** @brief Returns the shadow value
Shadow value is the value used to mark shadows in the foreground mask. Default value is 127. Value 0
in the mask always means background, 255 means foreground.
*/
CV_WRAP
virtual
int
getShadowValue
()
const
=
0
;
/** @brief Sets the shadow value
*/
CV_WRAP
virtual
void
setShadowValue
(
int
value
)
=
0
;
/** @brief Returns the shadow threshold
A shadow is detected if pixel is a darker version of the background. The shadow threshold (Tau in
the paper) is a threshold defining how much darker the shadow can be. Tau= 0.5 means that if a pixel
is more than twice darker then it is not shadow. See Prati, Mikic, Trivedi and Cucchiarra,
*Detecting Moving Shadows...*, IEEE PAMI,2003.
*/
CV_WRAP
virtual
double
getShadowThreshold
()
const
=
0
;
/** @brief Sets the shadow threshold
*/
CV_WRAP
virtual
void
setShadowThreshold
(
double
threshold
)
=
0
;
};
/** @brief Creates KNN Background Subtractor
@param history Length of the history.
@param dist2Threshold Threshold on the squared distance between the pixel and the sample to decide
whether a pixel is close to that sample. This parameter does not affect the background update.
@param detectShadows If true, the algorithm will detect shadows and mark them. It decreases the
speed a bit, so if you do not need this feature, set the parameter to false.
*/
CV_EXPORTS_W
Ptr
<
BackgroundSubtractorKNN
>
createBackgroundSubtractorKNN
(
int
history
=
500
,
double
dist2Threshold
=
400.0
,
bool
detectShadows
=
true
);
//! @} video_motion
}
// cv
#endif
modules/video/include/opencv2/video/tracking.hpp
浏览文件 @
dcae7698
此差异已折叠。
点击以展开。
modules/video/include/opencv2/video/tracking_c.h
浏览文件 @
dcae7698
...
...
@@ -50,6 +50,10 @@
extern
"C"
{
#endif
/** @addtogroup video_c
@{
*/
/****************************************************************************************\
* Motion Analysis *
\****************************************************************************************/
...
...
@@ -218,6 +222,7 @@ CVAPI(const CvMat*) cvKalmanCorrect( CvKalman* kalman, const CvMat* measurement
#define cvKalmanUpdateByTime cvKalmanPredict
#define cvKalmanUpdateByMeasurement cvKalmanCorrect
/** @} video_c */
#ifdef __cplusplus
}
// extern "C"
...
...
modules/videoio/include/opencv2/videoio.hpp
浏览文件 @
dcae7698
...
...
@@ -45,6 +45,13 @@
#include "opencv2/core.hpp"
/**
@defgroup videoio Media I/O
@{
@defgroup videoio_c C API
@defgroup videoio_ios iOS glue
@}
*/
////////////////////////////////// video io /////////////////////////////////
...
...
@@ -54,6 +61,9 @@ typedef struct CvVideoWriter CvVideoWriter;
namespace
cv
{
//! @addtogroup videoio
//! @{
// Camera API
enum
{
CAP_ANY
=
0
,
// autodetect
CAP_VFW
=
200
,
// platform native
...
...
@@ -345,26 +355,209 @@ enum { CAP_INTELPERC_DEPTH_MAP = 0, // Each pixel is a 16-bit integ
class
IVideoCapture
;
/** @brief Class for video capturing from video files, image sequences or cameras. The class provides C++ API
for capturing video from cameras or for reading video files and image sequences. Here is how the
class can be used: :
@code
#include "opencv2/opencv.hpp"
using namespace cv;
int main(int, char**)
{
VideoCapture cap(0); // open the default camera
if(!cap.isOpened()) // check if we succeeded
return -1;
Mat edges;
namedWindow("edges",1);
for(;;)
{
Mat frame;
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, COLOR_BGR2GRAY);
GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5);
Canny(edges, edges, 0, 30, 3);
imshow("edges", edges);
if(waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
return 0;
}
@endcode
@note In C API the black-box structure CvCapture is used instead of VideoCapture.
@note
- A basic sample on using the VideoCapture interface can be found at
opencv\_source\_code/samples/cpp/starter\_video.cpp
- Another basic video processing sample can be found at
opencv\_source\_code/samples/cpp/video\_dmtx.cpp
- (Python) A basic sample on using the VideoCapture interface can be found at
opencv\_source\_code/samples/python2/video.py
- (Python) Another basic video processing sample can be found at
opencv\_source\_code/samples/python2/video\_dmtx.py
- (Python) A multi threaded video processing sample can be found at
opencv\_source\_code/samples/python2/video\_threaded.py
*/
class
CV_EXPORTS_W
VideoCapture
{
public:
/** @brief
@note In C API, when you finished working with video, release CvCapture structure with
cvReleaseCapture(), or use Ptr\<CvCapture\> that calls cvReleaseCapture() automatically in the
destructor.
*/
CV_WRAP
VideoCapture
();
/** @overload
@param filename name of the opened video file (eg. video.avi) or image sequence (eg.
img\_%02d.jpg, which will read samples like img\_00.jpg, img\_01.jpg, img\_02.jpg, ...)
*/
CV_WRAP
VideoCapture
(
const
String
&
filename
);
/** @overload
@param device id of the opened video capturing device (i.e. a camera index). If there is a single
camera connected, just pass 0.
*/
CV_WRAP
VideoCapture
(
int
device
);
virtual
~
VideoCapture
();
/** @brief Open video file or a capturing device for video capturing
@param filename name of the opened video file (eg. video.avi) or image sequence (eg.
img\_%02d.jpg, which will read samples like img\_00.jpg, img\_01.jpg, img\_02.jpg, ...)
The methods first call VideoCapture::release to close the already opened file or camera.
*/
CV_WRAP
virtual
bool
open
(
const
String
&
filename
);
/** @overload
@param device id of the opened video capturing device (i.e. a camera index).
*/
CV_WRAP
virtual
bool
open
(
int
device
);
/** @brief Returns true if video capturing has been initialized already.
If the previous call to VideoCapture constructor or VideoCapture::open succeeded, the method returns
true.
*/
CV_WRAP
virtual
bool
isOpened
()
const
;
/** @brief Closes video file or capturing device.
The methods are automatically called by subsequent VideoCapture::open and by VideoCapture
destructor.
The C function also deallocates memory and clears \*capture pointer.
*/
CV_WRAP
virtual
void
release
();
/** @brief Grabs the next frame from video file or capturing device.
The methods/functions grab the next frame from video file or camera and return true (non-zero) in
the case of success.
The primary use of the function is in multi-camera environments, especially when the cameras do not
have hardware synchronization. That is, you call VideoCapture::grab() for each camera and after that
call the slower method VideoCapture::retrieve() to decode and get frame from each camera. This way
the overhead on demosaicing or motion jpeg decompression etc. is eliminated and the retrieved frames
from different cameras will be closer in time.
Also, when a connected camera is multi-head (for example, a stereo camera or a Kinect device), the
correct way of retrieving data from it is to call VideoCapture::grab first and then call
VideoCapture::retrieve one or more times with different values of the channel parameter. See
<https://github.com/Itseez/opencv/tree/master/samples/cpp/openni_capture.cpp>
*/
CV_WRAP
virtual
bool
grab
();
/** @brief Decodes and returns the grabbed video frame.
The methods/functions decode and return the just grabbed frame. If no frames has been grabbed
(camera has been disconnected, or there are no more frames in video file), the methods return false
and the functions return NULL pointer.
@note OpenCV 1.x functions cvRetrieveFrame and cv.RetrieveFrame return image stored inside the video
capturing structure. It is not allowed to modify or release the image! You can copy the frame using
:ocvcvCloneImage and then do whatever you want with the copy.
*/
CV_WRAP
virtual
bool
retrieve
(
OutputArray
image
,
int
flag
=
0
);
virtual
VideoCapture
&
operator
>>
(
CV_OUT
Mat
&
image
);
virtual
VideoCapture
&
operator
>>
(
CV_OUT
UMat
&
image
);
/** @brief Grabs, decodes and returns the next video frame.
The methods/functions combine VideoCapture::grab and VideoCapture::retrieve in one call. This is the
most convenient method for reading video files or capturing data from decode and return the just
grabbed frame. If no frames has been grabbed (camera has been disconnected, or there are no more
frames in video file), the methods return false and the functions return NULL pointer.
@note OpenCV 1.x functions cvRetrieveFrame and cv.RetrieveFrame return image stored inside the video
capturing structure. It is not allowed to modify or release the image! You can copy the frame using
:ocvcvCloneImage and then do whatever you want with the copy.
*/
CV_WRAP
virtual
bool
read
(
OutputArray
image
);
/** @brief Sets a property in the VideoCapture.
@param propId Property identifier. It can be one of the following:
- **CV\_CAP\_PROP\_POS\_MSEC** Current position of the video file in milliseconds.
- **CV\_CAP\_PROP\_POS\_FRAMES** 0-based index of the frame to be decoded/captured next.
- **CV\_CAP\_PROP\_POS\_AVI\_RATIO** Relative position of the video file: 0 - start of the
film, 1 - end of the film.
- **CV\_CAP\_PROP\_FRAME\_WIDTH** Width of the frames in the video stream.
- **CV\_CAP\_PROP\_FRAME\_HEIGHT** Height of the frames in the video stream.
- **CV\_CAP\_PROP\_FPS** Frame rate.
- **CV\_CAP\_PROP\_FOURCC** 4-character code of codec.
- **CV\_CAP\_PROP\_FRAME\_COUNT** Number of frames in the video file.
- **CV\_CAP\_PROP\_FORMAT** Format of the Mat objects returned by retrieve() .
- **CV\_CAP\_PROP\_MODE** Backend-specific value indicating the current capture mode.
- **CV\_CAP\_PROP\_BRIGHTNESS** Brightness of the image (only for cameras).
- **CV\_CAP\_PROP\_CONTRAST** Contrast of the image (only for cameras).
- **CV\_CAP\_PROP\_SATURATION** Saturation of the image (only for cameras).
- **CV\_CAP\_PROP\_HUE** Hue of the image (only for cameras).
- **CV\_CAP\_PROP\_GAIN** Gain of the image (only for cameras).
- **CV\_CAP\_PROP\_EXPOSURE** Exposure (only for cameras).
- **CV\_CAP\_PROP\_CONVERT\_RGB** Boolean flags indicating whether images should be converted
to RGB.
- **CV\_CAP\_PROP\_WHITE\_BALANCE** Currently unsupported
- **CV\_CAP\_PROP\_RECTIFICATION** Rectification flag for stereo cameras (note: only supported
by DC1394 v 2.x backend currently)
@param value Value of the property.
*/
CV_WRAP
virtual
bool
set
(
int
propId
,
double
value
);
/** @brief Returns the specified VideoCapture property
@param propId Property identifier. It can be one of the following:
- **CV\_CAP\_PROP\_POS\_MSEC** Current position of the video file in milliseconds or video
capture timestamp.
- **CV\_CAP\_PROP\_POS\_FRAMES** 0-based index of the frame to be decoded/captured next.
- **CV\_CAP\_PROP\_POS\_AVI\_RATIO** Relative position of the video file: 0 - start of the
film, 1 - end of the film.
- **CV\_CAP\_PROP\_FRAME\_WIDTH** Width of the frames in the video stream.
- **CV\_CAP\_PROP\_FRAME\_HEIGHT** Height of the frames in the video stream.
- **CV\_CAP\_PROP\_FPS** Frame rate.
- **CV\_CAP\_PROP\_FOURCC** 4-character code of codec.
- **CV\_CAP\_PROP\_FRAME\_COUNT** Number of frames in the video file.
- **CV\_CAP\_PROP\_FORMAT** Format of the Mat objects returned by retrieve() .
- **CV\_CAP\_PROP\_MODE** Backend-specific value indicating the current capture mode.
- **CV\_CAP\_PROP\_BRIGHTNESS** Brightness of the image (only for cameras).
- **CV\_CAP\_PROP\_CONTRAST** Contrast of the image (only for cameras).
- **CV\_CAP\_PROP\_SATURATION** Saturation of the image (only for cameras).
- **CV\_CAP\_PROP\_HUE** Hue of the image (only for cameras).
- **CV\_CAP\_PROP\_GAIN** Gain of the image (only for cameras).
- **CV\_CAP\_PROP\_EXPOSURE** Exposure (only for cameras).
- **CV\_CAP\_PROP\_CONVERT\_RGB** Boolean flags indicating whether images should be converted
to RGB.
- **CV\_CAP\_PROP\_WHITE\_BALANCE** Currently not supported
- **CV\_CAP\_PROP\_RECTIFICATION** Rectification flag for stereo cameras (note: only supported
by DC1394 v 2.x backend currently)
**Note**: When querying a property that is not supported by the backend used by the VideoCapture
class, value 0 is returned.
*/
CV_WRAP
virtual
double
get
(
int
propId
);
protected:
...
...
@@ -374,21 +567,63 @@ private:
static
Ptr
<
IVideoCapture
>
createCameraCapture
(
int
index
);
};
/** @brief Video writer class.
*/
class
CV_EXPORTS_W
VideoWriter
{
public:
/** @brief VideoWriter constructors
The constructors/functions initialize video writers. On Linux FFMPEG is used to write videos; on
Windows FFMPEG or VFW is used; on MacOSX QTKit is used.
*/
CV_WRAP
VideoWriter
();
/** @overload
@param filename Name of the output video file.
@param fourcc 4-character code of codec used to compress the frames. For example,
VideoWriter::fourcc('P','I','M','1') is a MPEG-1 codec, VideoWriter::fourcc('M','J','P','G') is a
motion-jpeg codec etc. List of codes can be obtained at [Video Codecs by
FOURCC](http://www.fourcc.org/codecs.php) page.
@param fps Framerate of the created video stream.
@param frameSize Size of the video frames.
@param isColor If it is not zero, the encoder will expect and encode color frames, otherwise it
will work with grayscale frames (the flag is currently supported on Windows only).
*/
CV_WRAP
VideoWriter
(
const
String
&
filename
,
int
fourcc
,
double
fps
,
Size
frameSize
,
bool
isColor
=
true
);
virtual
~
VideoWriter
();
/** @brief Initializes or reinitializes video writer.
The method opens video writer. Parameters are the same as in the constructor
VideoWriter::VideoWriter.
*/
CV_WRAP
virtual
bool
open
(
const
String
&
filename
,
int
fourcc
,
double
fps
,
Size
frameSize
,
bool
isColor
=
true
);
/** @brief Returns true if video writer has been successfully initialized.
*/
CV_WRAP
virtual
bool
isOpened
()
const
;
CV_WRAP
virtual
void
release
();
virtual
VideoWriter
&
operator
<<
(
const
Mat
&
image
);
/** @brief Writes the next video frame
@param image The written frame
The functions/methods write the specified image to video file. It must have the same size as has
been specified when opening the video writer.
*/
CV_WRAP
virtual
void
write
(
const
Mat
&
image
);
/** @brief Concatenates 4 chars to a fourcc code
This static method constructs the fourcc code of the codec to be used in the constructor
VideoWriter::VideoWriter or VideoWriter::open.
*/
CV_WRAP
static
int
fourcc
(
char
c1
,
char
c2
,
char
c3
,
char
c4
);
protected:
...
...
@@ -398,6 +633,8 @@ protected:
template
<
>
CV_EXPORTS
void
DefaultDeleter
<
CvCapture
>::
operator
()(
CvCapture
*
obj
)
const
;
template
<
>
CV_EXPORTS
void
DefaultDeleter
<
CvVideoWriter
>::
operator
()(
CvVideoWriter
*
obj
)
const
;
//! @} videoio
}
// cv
#endif //__OPENCV_VIDEOIO_HPP__
modules/videoio/include/opencv2/videoio/cap_ios.h
浏览文件 @
dcae7698
...
...
@@ -32,6 +32,9 @@
#import <ImageIO/ImageIO.h>
#include "opencv2/core.hpp"
//! @addtogroup videoio_ios
//! @{
/////////////////////////////////////// CvAbstractCamera /////////////////////////////////////
@class
CvAbstractCamera
;
...
...
@@ -167,3 +170,6 @@
-
(
void
)
takePicture
;
@end
//! @} videoio_ios
modules/videoio/include/opencv2/videoio/videoio_c.h
浏览文件 @
dcae7698
...
...
@@ -48,6 +48,10 @@
extern
"C"
{
#endif
/* __cplusplus */
/**
@addtogroup videoio_c
@{
*/
/****************************************************************************************\
* Working with Video Files and Cameras *
...
...
@@ -416,6 +420,7 @@ CVAPI(void) cvReleaseVideoWriter( CvVideoWriter** writer );
#define cvCreateAVIWriter cvCreateVideoWriter
#define cvWriteToAVI cvWriteFrame
/** @} videoio_c */
#ifdef __cplusplus
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录