mirror of
https://github.com/opencv/opencv.git
synced 2026-07-30 15:53:03 +04:00
Merge pull request #25042 from mshabunin:doc-upgrade
Documentation transition to fresh Doxygen #25042 * current Doxygen version is 1.10, but we will use 1.9.8 for now due to issue with snippets (https://github.com/doxygen/doxygen/pull/10584) * Doxyfile adapted to new version * MathJax updated to 3.x * `@relates` instructions removed temporarily due to issue in Doxygen (to avoid warnings) * refactored matx.hpp - extracted matx.inl.hpp * opencv_contrib - https://github.com/opencv/opencv_contrib/pull/3638
This commit is contained in:
@@ -62,10 +62,6 @@
|
||||
@defgroup core Core functionality
|
||||
@{
|
||||
@defgroup core_basic Basic structures
|
||||
@defgroup core_c C structures and operations
|
||||
@{
|
||||
@defgroup core_c_glue Connections with C++
|
||||
@}
|
||||
@defgroup core_array Operations on arrays
|
||||
@defgroup core_async Asynchronous API
|
||||
@defgroup core_xml XML/YAML Persistence
|
||||
|
||||
@@ -140,7 +140,6 @@ public:
|
||||
|
||||
//! @} core_utils
|
||||
|
||||
//! @endcond
|
||||
|
||||
//! @addtogroup core_basic
|
||||
//! @{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -696,9 +696,6 @@ protected:
|
||||
|
||||
/////////////////// XML & YAML I/O implementation //////////////////
|
||||
|
||||
//! @relates cv::FileStorage
|
||||
//! @{
|
||||
|
||||
CV_EXPORTS void write( FileStorage& fs, const String& name, int value );
|
||||
CV_EXPORTS void write( FileStorage& fs, const String& name, float value );
|
||||
CV_EXPORTS void write( FileStorage& fs, const String& name, double value );
|
||||
@@ -715,11 +712,6 @@ CV_EXPORTS void writeScalar( FileStorage& fs, float value );
|
||||
CV_EXPORTS void writeScalar( FileStorage& fs, double value );
|
||||
CV_EXPORTS void writeScalar( FileStorage& fs, const String& value );
|
||||
|
||||
//! @}
|
||||
|
||||
//! @relates cv::FileNode
|
||||
//! @{
|
||||
|
||||
CV_EXPORTS void read(const FileNode& node, int& value, int default_value);
|
||||
CV_EXPORTS void read(const FileNode& node, float& value, float default_value);
|
||||
CV_EXPORTS void read(const FileNode& node, double& value, double default_value);
|
||||
@@ -796,10 +788,7 @@ static inline void read(const FileNode& node, Range& value, const Range& default
|
||||
value.start = temp.x; value.end = temp.y;
|
||||
}
|
||||
|
||||
//! @}
|
||||
|
||||
/** @brief Writes string to a file storage.
|
||||
@relates cv::FileStorage
|
||||
*/
|
||||
CV_EXPORTS FileStorage& operator << (FileStorage& fs, const String& str);
|
||||
|
||||
@@ -884,9 +873,6 @@ namespace internal
|
||||
|
||||
//! @endcond
|
||||
|
||||
//! @relates cv::FileStorage
|
||||
//! @{
|
||||
|
||||
template<typename _Tp> static inline
|
||||
void write(FileStorage& fs, const _Tp& value)
|
||||
{
|
||||
@@ -1118,10 +1104,6 @@ static inline void write(FileStorage& fs, const std::vector<DMatch>& vec)
|
||||
}
|
||||
#endif
|
||||
|
||||
//! @} FileStorage
|
||||
|
||||
//! @relates cv::FileNode
|
||||
//! @{
|
||||
|
||||
static inline
|
||||
void read(const FileNode& node, bool& value, bool default_value)
|
||||
@@ -1208,11 +1190,6 @@ void read( const FileNode& node, std::vector<DMatch>& vec, const std::vector<DMa
|
||||
read(node, vec);
|
||||
}
|
||||
|
||||
//! @} FileNode
|
||||
|
||||
//! @relates cv::FileStorage
|
||||
//! @{
|
||||
|
||||
/** @brief Writes data to a file storage.
|
||||
*/
|
||||
template<typename _Tp> static inline
|
||||
@@ -1244,11 +1221,6 @@ FileStorage& operator << (FileStorage& fs, char* value)
|
||||
return (fs << String(value));
|
||||
}
|
||||
|
||||
//! @} FileStorage
|
||||
|
||||
//! @relates cv::FileNodeIterator
|
||||
//! @{
|
||||
|
||||
/** @brief Reads data from a file storage.
|
||||
*/
|
||||
template<typename _Tp> static inline
|
||||
@@ -1268,11 +1240,6 @@ FileNodeIterator& operator >> (FileNodeIterator& it, std::vector<_Tp>& vec)
|
||||
return it;
|
||||
}
|
||||
|
||||
//! @} FileNodeIterator
|
||||
|
||||
//! @relates cv::FileNode
|
||||
//! @{
|
||||
|
||||
/** @brief Reads data from a file storage.
|
||||
*/
|
||||
template<typename _Tp> static inline
|
||||
@@ -1323,11 +1290,6 @@ void operator >> (const FileNode& n, DMatch& m)
|
||||
it >> m.queryIdx >> m.trainIdx >> m.imgIdx >> m.distance;
|
||||
}
|
||||
|
||||
//! @} FileNode
|
||||
|
||||
//! @relates cv::FileNodeIterator
|
||||
//! @{
|
||||
|
||||
CV_EXPORTS bool operator == (const FileNodeIterator& it1, const FileNodeIterator& it2);
|
||||
CV_EXPORTS bool operator != (const FileNodeIterator& it1, const FileNodeIterator& it2);
|
||||
|
||||
@@ -1343,8 +1305,6 @@ bool operator < (const FileNodeIterator& it1, const FileNodeIterator& it2)
|
||||
return it1.remaining() > it2.remaining();
|
||||
}
|
||||
|
||||
//! @} FileNodeIterator
|
||||
|
||||
} // cv
|
||||
|
||||
#endif // OPENCV_CORE_PERSISTENCE_HPP
|
||||
|
||||
@@ -56,15 +56,15 @@
|
||||
@defgroup features2d_main Feature Detection and Description
|
||||
@defgroup features2d_match Descriptor Matchers
|
||||
|
||||
Matchers of keypoint descriptors in OpenCV have wrappers with a common interface that enables you to
|
||||
easily switch between different algorithms solving the same problem. This section is devoted to
|
||||
matching descriptors that are represented as vectors in a multidimensional space. All objects that
|
||||
implement vector descriptor matchers inherit the DescriptorMatcher interface.
|
||||
Matchers of keypoint descriptors in OpenCV have wrappers with a common interface that enables
|
||||
you to easily switch between different algorithms solving the same problem. This section is
|
||||
devoted to matching descriptors that are represented as vectors in a multidimensional space.
|
||||
All objects that implement vector descriptor matchers inherit the DescriptorMatcher interface.
|
||||
|
||||
@defgroup features2d_draw Drawing Function of Keypoints and Matches
|
||||
@defgroup features2d_category Object Categorization
|
||||
|
||||
This section describes approaches based on local 2D features and used to categorize objects.
|
||||
This section describes approaches based on local 2D features and used to categorize objects.
|
||||
|
||||
@defgroup feature2d_hal Hardware Acceleration Layer
|
||||
@{
|
||||
@@ -567,10 +567,6 @@ public:
|
||||
CV_WRAP virtual String getDefaultName() const CV_OVERRIDE;
|
||||
};
|
||||
|
||||
//! @} features2d_main
|
||||
|
||||
//! @addtogroup features2d_main
|
||||
//! @{
|
||||
|
||||
/** @brief Wrapping class for feature detection using the FAST method. :
|
||||
*/
|
||||
@@ -627,10 +623,6 @@ detection, use cv.FAST.detect() method.
|
||||
CV_EXPORTS void FAST( InputArray image, CV_OUT std::vector<KeyPoint>& keypoints,
|
||||
int threshold, bool nonmaxSuppression, FastFeatureDetector::DetectorType type );
|
||||
|
||||
//! @} features2d_main
|
||||
|
||||
//! @addtogroup features2d_main
|
||||
//! @{
|
||||
|
||||
/** @brief Wrapping class for feature detection using the AGAST method. :
|
||||
*/
|
||||
@@ -793,10 +785,6 @@ public:
|
||||
CV_WRAP virtual const std::vector<std::vector<cv::Point> >& getBlobContours() const;
|
||||
};
|
||||
|
||||
//! @} features2d_main
|
||||
|
||||
//! @addtogroup features2d_main
|
||||
//! @{
|
||||
|
||||
/** @brief Class implementing the KAZE keypoint detector and descriptor extractor, described in @cite ABD12 .
|
||||
|
||||
@@ -925,7 +913,6 @@ public:
|
||||
CV_WRAP virtual int getMaxPoints() const = 0;
|
||||
};
|
||||
|
||||
//! @} features2d_main
|
||||
|
||||
/****************************************************************************************\
|
||||
* Distance *
|
||||
@@ -990,6 +977,8 @@ struct L1
|
||||
}
|
||||
};
|
||||
|
||||
//! @} features2d_main
|
||||
|
||||
/****************************************************************************************\
|
||||
* DescriptorMatcher *
|
||||
\****************************************************************************************/
|
||||
@@ -1431,6 +1420,9 @@ CV_EXPORTS_AS(drawMatchesKnn) void drawMatches( InputArray img1, const std::vect
|
||||
* Functions to evaluate the feature detectors and [generic] descriptor extractors *
|
||||
\****************************************************************************************/
|
||||
|
||||
//! @addtogroup features2d_main
|
||||
//! @{
|
||||
|
||||
CV_EXPORTS void evaluateFeatureDetector( const Mat& img1, const Mat& img2, const Mat& H1to2,
|
||||
std::vector<KeyPoint>* keypoints1, std::vector<KeyPoint>* keypoints2,
|
||||
float& repeatability, int& correspCount,
|
||||
@@ -1443,6 +1435,8 @@ CV_EXPORTS void computeRecallPrecisionCurve( const std::vector<std::vector<DMatc
|
||||
CV_EXPORTS float getRecall( const std::vector<Point2f>& recallPrecisionCurve, float l_precision );
|
||||
CV_EXPORTS int getNearestPoint( const std::vector<Point2f>& recallPrecisionCurve, float l_precision );
|
||||
|
||||
//! @}
|
||||
|
||||
/****************************************************************************************\
|
||||
* Bag of visual words *
|
||||
\****************************************************************************************/
|
||||
@@ -1603,8 +1597,6 @@ protected:
|
||||
|
||||
//! @} features2d_category
|
||||
|
||||
//! @} features2d
|
||||
|
||||
} /* namespace cv */
|
||||
|
||||
#endif
|
||||
|
||||
@@ -17,7 +17,7 @@ is volatile at the moment and there may be minor but
|
||||
compatibility-breaking changes in the future.
|
||||
|
||||
# Contents
|
||||
|
||||
gapi
|
||||
G-API documentation is organized into the following chapters:
|
||||
|
||||
- @subpage gapi_purposes
|
||||
@@ -41,6 +41,10 @@ G-API documentation is organized into the following chapters:
|
||||
|
||||
- API Reference: functions and classes
|
||||
|
||||
- @subpage gapi_ref
|
||||
|
||||
Core G-API classes, data types, backends, etc.
|
||||
|
||||
- @subpage gapi_core
|
||||
|
||||
Core G-API operations - arithmetic, boolean, and other matrix
|
||||
@@ -51,6 +55,14 @@ G-API documentation is organized into the following chapters:
|
||||
Image processing functions: color space conversions, various
|
||||
filters, etc.
|
||||
|
||||
- @subpage gapi_video
|
||||
|
||||
Video processing functionality.
|
||||
|
||||
- @subpage gapi_draw
|
||||
|
||||
Drawing and composition functionality
|
||||
|
||||
# API Example {#gapi_example}
|
||||
|
||||
A very basic example of G-API pipeline is shown below:
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
# G-API Implementation details
|
||||
|
||||
Note -- this section is still in progress.
|
||||
@note this section is still in progress.
|
||||
|
||||
# API layer {#gapi_detail_api}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
#include <memory>
|
||||
|
||||
/** \defgroup gapi G-API framework
|
||||
/** \defgroup gapi_ref G-API framework
|
||||
@{
|
||||
@defgroup gapi_main_classes G-API Main Classes
|
||||
@defgroup gapi_data_objects G-API Data Types
|
||||
|
||||
@@ -249,6 +249,8 @@ template<typename T> struct wrap_serialize
|
||||
} // namespace s11n
|
||||
} // namespace gapi
|
||||
|
||||
/** @} gapi_compile_args */
|
||||
|
||||
/**
|
||||
* @brief Ask G-API to dump compiled graph in Graphviz format under
|
||||
* the given file name.
|
||||
@@ -261,7 +263,6 @@ struct graph_dump_path
|
||||
{
|
||||
std::string m_dump_path;
|
||||
};
|
||||
/** @} */
|
||||
|
||||
/**
|
||||
* @brief Ask G-API to use threaded executor when cv::GComputation
|
||||
@@ -276,7 +277,6 @@ struct GAPI_EXPORTS use_threaded_executor
|
||||
|
||||
uint32_t num_threads;
|
||||
};
|
||||
/** @} */
|
||||
|
||||
namespace detail
|
||||
{
|
||||
|
||||
@@ -388,7 +388,6 @@ protected:
|
||||
/// @private
|
||||
std::shared_ptr<Priv> m_priv;
|
||||
};
|
||||
/** @} */
|
||||
|
||||
namespace gapi {
|
||||
|
||||
@@ -413,7 +412,6 @@ struct GAPI_EXPORTS_W_SIMPLE queue_capacity
|
||||
GAPI_PROP_RW
|
||||
size_t capacity;
|
||||
};
|
||||
/** @} */
|
||||
} // namespace streaming
|
||||
} // namespace gapi
|
||||
|
||||
@@ -425,6 +423,8 @@ template<> struct CompileArgTag<cv::gapi::streaming::queue_capacity>
|
||||
};
|
||||
}
|
||||
|
||||
/** @} gapi_main_classes */
|
||||
|
||||
}
|
||||
|
||||
#endif // OPENCV_GAPI_GSTREAMING_COMPILED_HPP
|
||||
|
||||
@@ -690,7 +690,6 @@ namespace wip { namespace ov {
|
||||
* taking into account the i/o data transfer.
|
||||
*/
|
||||
struct benchmark_mode { };
|
||||
/** @} */
|
||||
|
||||
} // namespace ov
|
||||
} // namespace wip
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
#include "opencv2/highgui.hpp"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int value = 50;
|
||||
int value2 = 0;
|
||||
|
||||
namedWindow("main1",WINDOW_NORMAL);
|
||||
namedWindow("main2",WINDOW_AUTOSIZE | WINDOW_GUI_NORMAL);
|
||||
createTrackbar( "track1", "main1", &value, 255, NULL);
|
||||
|
||||
String nameb1 = "button1";
|
||||
String nameb2 = "button2";
|
||||
|
||||
createButton(nameb1,callbackButton,&nameb1,QT_CHECKBOX,1);
|
||||
createButton(nameb2,callbackButton,NULL,QT_CHECKBOX,0);
|
||||
createTrackbar( "track2", NULL, &value2, 255, NULL);
|
||||
createButton("button5",callbackButton1,NULL,QT_RADIOBOX,0);
|
||||
createButton("button6",callbackButton2,NULL,QT_RADIOBOX,1);
|
||||
|
||||
setMouseCallback( "main2",on_mouse,NULL );
|
||||
|
||||
Mat img1 = imread("files/flower.jpg");
|
||||
VideoCapture video;
|
||||
video.open("files/hockey.avi");
|
||||
|
||||
Mat img2,img3;
|
||||
while( waitKey(33) != 27 )
|
||||
{
|
||||
img1.convertTo(img2,-1,1,value);
|
||||
video >> img3;
|
||||
|
||||
imshow("main1",img2);
|
||||
imshow("main2",img3);
|
||||
}
|
||||
|
||||
destroyAllWindows();
|
||||
return 0;
|
||||
}
|
||||
@@ -85,50 +85,8 @@ It provides easy interface to:
|
||||
created. Then, a new button is attached to it.
|
||||
|
||||
See below the example used to generate the figure:
|
||||
@code
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
|
||||
int value = 50;
|
||||
int value2 = 0;
|
||||
|
||||
|
||||
namedWindow("main1",WINDOW_NORMAL);
|
||||
namedWindow("main2",WINDOW_AUTOSIZE | WINDOW_GUI_NORMAL);
|
||||
createTrackbar( "track1", "main1", &value, 255, NULL);
|
||||
|
||||
String nameb1 = "button1";
|
||||
String nameb2 = "button2";
|
||||
|
||||
createButton(nameb1,callbackButton,&nameb1,QT_CHECKBOX,1);
|
||||
createButton(nameb2,callbackButton,NULL,QT_CHECKBOX,0);
|
||||
createTrackbar( "track2", NULL, &value2, 255, NULL);
|
||||
createButton("button5",callbackButton1,NULL,QT_RADIOBOX,0);
|
||||
createButton("button6",callbackButton2,NULL,QT_RADIOBOX,1);
|
||||
|
||||
setMouseCallback( "main2",on_mouse,NULL );
|
||||
|
||||
Mat img1 = imread("files/flower.jpg");
|
||||
VideoCapture video;
|
||||
video.open("files/hockey.avi");
|
||||
|
||||
Mat img2,img3;
|
||||
|
||||
while( waitKey(33) != 27 )
|
||||
{
|
||||
img1.convertTo(img2,-1,1,value);
|
||||
video >> img3;
|
||||
|
||||
imshow("main1",img2);
|
||||
imshow("main2",img3);
|
||||
}
|
||||
|
||||
destroyAllWindows();
|
||||
|
||||
return 0;
|
||||
}
|
||||
@endcode
|
||||
|
||||
@include highgui_qt.cpp
|
||||
|
||||
@defgroup highgui_winrt WinRT support
|
||||
|
||||
@@ -139,36 +97,34 @@ It provides easy interface to:
|
||||
|
||||
See below the example used to generate the figure:
|
||||
@code
|
||||
void sample_app::MainPage::ShowWindow()
|
||||
void sample_app::MainPage::ShowWindow()
|
||||
{
|
||||
static cv::String windowName("sample");
|
||||
cv::winrt_initContainer(this->cvContainer);
|
||||
cv::namedWindow(windowName); // not required
|
||||
|
||||
cv::Mat image = cv::imread("Assets/sample.jpg");
|
||||
cv::Mat converted = cv::Mat(image.rows, image.cols, CV_8UC4);
|
||||
cv::cvtColor(image, converted, COLOR_BGR2BGRA);
|
||||
cv::imshow(windowName, converted); // this will create window if it hasn't been created before
|
||||
|
||||
int state = 42;
|
||||
cv::TrackbarCallback callback = [](int pos, void* userdata)
|
||||
{
|
||||
static cv::String windowName("sample");
|
||||
cv::winrt_initContainer(this->cvContainer);
|
||||
cv::namedWindow(windowName); // not required
|
||||
|
||||
cv::Mat image = cv::imread("Assets/sample.jpg");
|
||||
cv::Mat converted = cv::Mat(image.rows, image.cols, CV_8UC4);
|
||||
cv::cvtColor(image, converted, COLOR_BGR2BGRA);
|
||||
cv::imshow(windowName, converted); // this will create window if it hasn't been created before
|
||||
|
||||
int state = 42;
|
||||
cv::TrackbarCallback callback = [](int pos, void* userdata)
|
||||
{
|
||||
if (pos == 0) {
|
||||
cv::destroyWindow(windowName);
|
||||
}
|
||||
};
|
||||
cv::TrackbarCallback callbackTwin = [](int pos, void* userdata)
|
||||
{
|
||||
if (pos >= 70) {
|
||||
cv::destroyAllWindows();
|
||||
}
|
||||
};
|
||||
cv::createTrackbar("Sample trackbar", windowName, &state, 100, callback);
|
||||
cv::createTrackbar("Twin brother", windowName, &state, 100, callbackTwin);
|
||||
}
|
||||
if (pos == 0) {
|
||||
cv::destroyWindow(windowName);
|
||||
}
|
||||
};
|
||||
cv::TrackbarCallback callbackTwin = [](int pos, void* userdata)
|
||||
{
|
||||
if (pos >= 70) {
|
||||
cv::destroyAllWindows();
|
||||
}
|
||||
};
|
||||
cv::createTrackbar("Sample trackbar", windowName, &state, 100, callback);
|
||||
cv::createTrackbar("Twin brother", windowName, &state, 100, callbackTwin);
|
||||
}
|
||||
@endcode
|
||||
|
||||
@defgroup highgui_c C API
|
||||
@}
|
||||
*/
|
||||
|
||||
|
||||
@@ -48,7 +48,6 @@
|
||||
/**
|
||||
@defgroup imgcodecs Image file reading and writing
|
||||
@{
|
||||
@defgroup imgcodecs_c C API
|
||||
@defgroup imgcodecs_flags Flags used for image file reading and writing
|
||||
@defgroup imgcodecs_ios iOS glue
|
||||
@defgroup imgcodecs_macosx MacOS(OSX) glue
|
||||
@@ -297,7 +296,7 @@ It also demonstrates how to save multiple images in a TIFF file:
|
||||
CV_EXPORTS_W bool imwrite( const String& filename, InputArray img,
|
||||
const std::vector<int>& params = std::vector<int>());
|
||||
|
||||
/// @overload multi-image overload for bindings
|
||||
//! @brief multi-image overload for bindings
|
||||
CV_WRAP static inline
|
||||
bool imwritemulti(const String& filename, InputArrayOfArrays img,
|
||||
const std::vector<int>& params = std::vector<int>())
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
Color conversions {#imgproc_color_conversions}
|
||||
=================
|
||||
|
||||
See cv::cvtColor and cv::ColorConversionCodes
|
||||
|
||||
@todo document other conversion modes
|
||||
|
||||
@anchor color_convert_rgb_gray
|
||||
RGB \f$\leftrightarrow\f$ GRAY
|
||||
RGB \emoji arrow_right GRAY
|
||||
------------------------------
|
||||
Transformations within RGB space like adding/removing the alpha channel, reversing the channel
|
||||
order, conversion to/from 16-bit RGB color (R5:G6:B5 or R5:G5:B5), as well as conversion
|
||||
@@ -20,7 +22,7 @@ More advanced channel reordering can also be done with cv::mixChannels.
|
||||
@see cv::COLOR_BGR2GRAY, cv::COLOR_RGB2GRAY, cv::COLOR_GRAY2BGR, cv::COLOR_GRAY2RGB
|
||||
|
||||
@anchor color_convert_rgb_xyz
|
||||
RGB \f$\leftrightarrow\f$ CIE XYZ.Rec 709 with D65 white point
|
||||
RGB \emoji arrow_right CIE XYZ.Rec 709 with D65 white point
|
||||
--------------------------------------------------------------
|
||||
\f[\begin{bmatrix} X \\ Y \\ Z
|
||||
\end{bmatrix} \leftarrow \begin{bmatrix} 0.412453 & 0.357580 & 0.180423 \\ 0.212671 & 0.715160 & 0.072169 \\ 0.019334 & 0.119193 & 0.950227
|
||||
@@ -35,7 +37,7 @@ RGB \f$\leftrightarrow\f$ CIE XYZ.Rec 709 with D65 white point
|
||||
@see cv::COLOR_BGR2XYZ, cv::COLOR_RGB2XYZ, cv::COLOR_XYZ2BGR, cv::COLOR_XYZ2RGB
|
||||
|
||||
@anchor color_convert_rgb_ycrcb
|
||||
RGB \f$\leftrightarrow\f$ YCrCb JPEG (or YCC)
|
||||
RGB \emoji arrow_right YCrCb JPEG (or YCC)
|
||||
---------------------------------------------
|
||||
\f[Y \leftarrow 0.299 \cdot R + 0.587 \cdot G + 0.114 \cdot B\f]
|
||||
\f[Cr \leftarrow (R-Y) \cdot 0.713 + delta\f]
|
||||
@@ -49,7 +51,7 @@ Y, Cr, and Cb cover the whole value range.
|
||||
@see cv::COLOR_BGR2YCrCb, cv::COLOR_RGB2YCrCb, cv::COLOR_YCrCb2BGR, cv::COLOR_YCrCb2RGB
|
||||
|
||||
@anchor color_convert_rgb_hsv
|
||||
RGB \f$\leftrightarrow\f$ HSV
|
||||
RGB \emoji arrow_right HSV
|
||||
-----------------------------
|
||||
In case of 8-bit and 16-bit images, R, G, and B are converted to the floating-point format and
|
||||
scaled to fit the 0 to 1 range.
|
||||
@@ -71,7 +73,7 @@ The values are then converted to the destination data type:
|
||||
@see cv::COLOR_BGR2HSV, cv::COLOR_RGB2HSV, cv::COLOR_HSV2BGR, cv::COLOR_HSV2RGB
|
||||
|
||||
@anchor color_convert_rgb_hls
|
||||
RGB \f$\leftrightarrow\f$ HLS
|
||||
RGB \emoji arrow_right HLS
|
||||
-----------------------------
|
||||
In case of 8-bit and 16-bit images, R, G, and B are converted to the floating-point format and
|
||||
scaled to fit the 0 to 1 range.
|
||||
@@ -96,7 +98,7 @@ The values are then converted to the destination data type:
|
||||
@see cv::COLOR_BGR2HLS, cv::COLOR_RGB2HLS, cv::COLOR_HLS2BGR, cv::COLOR_HLS2RGB
|
||||
|
||||
@anchor color_convert_rgb_lab
|
||||
RGB \f$\leftrightarrow\f$ CIE L\*a\*b\*
|
||||
RGB \emoji arrow_right CIE L\*a\*b\*
|
||||
---------------------------------------
|
||||
In case of 8-bit and 16-bit images, R, G, and B are converted to the floating-point format and
|
||||
scaled to fit the 0 to 1 range.
|
||||
@@ -121,7 +123,7 @@ are then converted to the destination data type:
|
||||
@see cv::COLOR_BGR2Lab, cv::COLOR_RGB2Lab, cv::COLOR_Lab2BGR, cv::COLOR_Lab2RGB
|
||||
|
||||
@anchor color_convert_rgb_luv
|
||||
RGB \f$\leftrightarrow\f$ CIE L\*u\*v\*
|
||||
RGB \emoji arrow_right CIE L\*u\*v\*
|
||||
---------------------------------------
|
||||
In case of 8-bit and 16-bit images, R, G, and B are converted to the floating-point format and
|
||||
scaled to fit 0 to 1 range.
|
||||
@@ -148,7 +150,7 @@ sources on the web, primarily from the Charles Poynton site <http://www.poynton.
|
||||
@see cv::COLOR_BGR2Luv, cv::COLOR_RGB2Luv, cv::COLOR_Luv2BGR, cv::COLOR_Luv2RGB
|
||||
|
||||
@anchor color_convert_bayer
|
||||
Bayer \f$\rightarrow\f$ RGB
|
||||
Bayer \emoji arrow_right RGB
|
||||
---------------------------
|
||||
The Bayer pattern is widely used in CCD and CMOS cameras. It enables you to get color pictures
|
||||
from a single plane where R, G, and B pixels (sensors of a particular component) are interleaved
|
||||
|
||||
@@ -46,143 +46,143 @@
|
||||
#include "opencv2/core.hpp"
|
||||
|
||||
/**
|
||||
@defgroup imgproc Image Processing
|
||||
@defgroup imgproc Image Processing
|
||||
|
||||
This module includes image-processing functions.
|
||||
|
||||
@{
|
||||
@{
|
||||
@defgroup imgproc_filter Image Filtering
|
||||
|
||||
Functions and classes described in this section are used to perform various linear or non-linear
|
||||
filtering operations on 2D images (represented as Mat's). It means that for each pixel location
|
||||
\f$(x,y)\f$ in the source image (normally, rectangular), its neighborhood is considered and used to
|
||||
compute the response. In case of a linear filter, it is a weighted sum of pixel values. In case of
|
||||
morphological operations, it is the minimum or maximum values, and so on. The computed response is
|
||||
stored in the destination image at the same location \f$(x,y)\f$. It means that the output image
|
||||
will be of the same size as the input image. Normally, the functions support multi-channel arrays,
|
||||
in which case every channel is processed independently. Therefore, the output image will also have
|
||||
the same number of channels as the input one.
|
||||
Functions and classes described in this section are used to perform various linear or non-linear
|
||||
filtering operations on 2D images (represented as Mat's). It means that for each pixel location
|
||||
\f$(x,y)\f$ in the source image (normally, rectangular), its neighborhood is considered and used to
|
||||
compute the response. In case of a linear filter, it is a weighted sum of pixel values. In case of
|
||||
morphological operations, it is the minimum or maximum values, and so on. The computed response is
|
||||
stored in the destination image at the same location \f$(x,y)\f$. It means that the output image
|
||||
will be of the same size as the input image. Normally, the functions support multi-channel arrays,
|
||||
in which case every channel is processed independently. Therefore, the output image will also have
|
||||
the same number of channels as the input one.
|
||||
|
||||
Another common feature of the functions and classes described in this section is that, unlike
|
||||
simple arithmetic functions, they need to extrapolate values of some non-existing pixels. For
|
||||
example, if you want to smooth an image using a Gaussian \f$3 \times 3\f$ filter, then, when
|
||||
processing the left-most pixels in each row, you need pixels to the left of them, that is, outside
|
||||
of the image. You can let these pixels be the same as the left-most image pixels ("replicated
|
||||
border" extrapolation method), or assume that all the non-existing pixels are zeros ("constant
|
||||
border" extrapolation method), and so on. OpenCV enables you to specify the extrapolation method.
|
||||
For details, see #BorderTypes
|
||||
Another common feature of the functions and classes described in this section is that, unlike
|
||||
simple arithmetic functions, they need to extrapolate values of some non-existing pixels. For
|
||||
example, if you want to smooth an image using a Gaussian \f$3 \times 3\f$ filter, then, when
|
||||
processing the left-most pixels in each row, you need pixels to the left of them, that is, outside
|
||||
of the image. You can let these pixels be the same as the left-most image pixels ("replicated
|
||||
border" extrapolation method), or assume that all the non-existing pixels are zeros ("constant
|
||||
border" extrapolation method), and so on. OpenCV enables you to specify the extrapolation method.
|
||||
For details, see #BorderTypes
|
||||
|
||||
@anchor filter_depths
|
||||
### Depth combinations
|
||||
Input depth (src.depth()) | Output depth (ddepth)
|
||||
--------------------------|----------------------
|
||||
CV_8U | -1/CV_16S/CV_32F/CV_64F
|
||||
CV_16U/CV_16S | -1/CV_32F/CV_64F
|
||||
CV_32F | -1/CV_32F
|
||||
CV_64F | -1/CV_64F
|
||||
@anchor filter_depths
|
||||
### Depth combinations
|
||||
Input depth (src.depth()) | Output depth (ddepth)
|
||||
--------------------------|----------------------
|
||||
CV_8U | -1/CV_16S/CV_32F/CV_64F
|
||||
CV_16U/CV_16S | -1/CV_32F/CV_64F
|
||||
CV_32F | -1/CV_32F
|
||||
CV_64F | -1/CV_64F
|
||||
|
||||
@note when ddepth=-1, the output image will have the same depth as the source.
|
||||
@note when ddepth=-1, the output image will have the same depth as the source.
|
||||
|
||||
@note if you need double floating-point accuracy and using single floating-point input data
|
||||
(CV_32F input and CV_64F output depth combination), you can use @ref Mat.convertTo to convert
|
||||
the input data to the desired precision.
|
||||
@note if you need double floating-point accuracy and using single floating-point input data
|
||||
(CV_32F input and CV_64F output depth combination), you can use @ref Mat.convertTo to convert
|
||||
the input data to the desired precision.
|
||||
|
||||
@defgroup imgproc_transform Geometric Image Transformations
|
||||
|
||||
The functions in this section perform various geometrical transformations of 2D images. They do not
|
||||
change the image content but deform the pixel grid and map this deformed grid to the destination
|
||||
image. In fact, to avoid sampling artifacts, the mapping is done in the reverse order, from
|
||||
destination to the source. That is, for each pixel \f$(x, y)\f$ of the destination image, the
|
||||
functions compute coordinates of the corresponding "donor" pixel in the source image and copy the
|
||||
pixel value:
|
||||
The functions in this section perform various geometrical transformations of 2D images. They do not
|
||||
change the image content but deform the pixel grid and map this deformed grid to the destination
|
||||
image. In fact, to avoid sampling artifacts, the mapping is done in the reverse order, from
|
||||
destination to the source. That is, for each pixel \f$(x, y)\f$ of the destination image, the
|
||||
functions compute coordinates of the corresponding "donor" pixel in the source image and copy the
|
||||
pixel value:
|
||||
|
||||
\f[\texttt{dst} (x,y)= \texttt{src} (f_x(x,y), f_y(x,y))\f]
|
||||
\f[\texttt{dst} (x,y)= \texttt{src} (f_x(x,y), f_y(x,y))\f]
|
||||
|
||||
In case when you specify the forward mapping \f$\left<g_x, g_y\right>: \texttt{src} \rightarrow
|
||||
\texttt{dst}\f$, the OpenCV functions first compute the corresponding inverse mapping
|
||||
\f$\left<f_x, f_y\right>: \texttt{dst} \rightarrow \texttt{src}\f$ and then use the above formula.
|
||||
In case when you specify the forward mapping \f$\left<g_x, g_y\right>: \texttt{src} \rightarrow
|
||||
\texttt{dst}\f$, the OpenCV functions first compute the corresponding inverse mapping
|
||||
\f$\left<f_x, f_y\right>: \texttt{dst} \rightarrow \texttt{src}\f$ and then use the above formula.
|
||||
|
||||
The actual implementations of the geometrical transformations, from the most generic remap and to
|
||||
the simplest and the fastest resize, need to solve two main problems with the above formula:
|
||||
The actual implementations of the geometrical transformations, from the most generic remap and to
|
||||
the simplest and the fastest resize, need to solve two main problems with the above formula:
|
||||
|
||||
- Extrapolation of non-existing pixels. Similarly to the filtering functions described in the
|
||||
previous section, for some \f$(x,y)\f$, either one of \f$f_x(x,y)\f$, or \f$f_y(x,y)\f$, or both
|
||||
of them may fall outside of the image. In this case, an extrapolation method needs to be used.
|
||||
OpenCV provides the same selection of extrapolation methods as in the filtering functions. In
|
||||
addition, it provides the method #BORDER_TRANSPARENT. This means that the corresponding pixels in
|
||||
the destination image will not be modified at all.
|
||||
- Extrapolation of non-existing pixels. Similarly to the filtering functions described in the
|
||||
previous section, for some \f$(x,y)\f$, either one of \f$f_x(x,y)\f$, or \f$f_y(x,y)\f$, or both
|
||||
of them may fall outside of the image. In this case, an extrapolation method needs to be used.
|
||||
OpenCV provides the same selection of extrapolation methods as in the filtering functions. In
|
||||
addition, it provides the method #BORDER_TRANSPARENT. This means that the corresponding pixels in
|
||||
the destination image will not be modified at all.
|
||||
|
||||
- Interpolation of pixel values. Usually \f$f_x(x,y)\f$ and \f$f_y(x,y)\f$ are floating-point
|
||||
numbers. This means that \f$\left<f_x, f_y\right>\f$ can be either an affine or perspective
|
||||
transformation, or radial lens distortion correction, and so on. So, a pixel value at fractional
|
||||
coordinates needs to be retrieved. In the simplest case, the coordinates can be just rounded to the
|
||||
nearest integer coordinates and the corresponding pixel can be used. This is called a
|
||||
nearest-neighbor interpolation. However, a better result can be achieved by using more
|
||||
sophisticated [interpolation methods](http://en.wikipedia.org/wiki/Multivariate_interpolation) ,
|
||||
where a polynomial function is fit into some neighborhood of the computed pixel \f$(f_x(x,y),
|
||||
f_y(x,y))\f$, and then the value of the polynomial at \f$(f_x(x,y), f_y(x,y))\f$ is taken as the
|
||||
interpolated pixel value. In OpenCV, you can choose between several interpolation methods. See
|
||||
#resize for details.
|
||||
- Interpolation of pixel values. Usually \f$f_x(x,y)\f$ and \f$f_y(x,y)\f$ are floating-point
|
||||
numbers. This means that \f$\left<f_x, f_y\right>\f$ can be either an affine or perspective
|
||||
transformation, or radial lens distortion correction, and so on. So, a pixel value at fractional
|
||||
coordinates needs to be retrieved. In the simplest case, the coordinates can be just rounded to the
|
||||
nearest integer coordinates and the corresponding pixel can be used. This is called a
|
||||
nearest-neighbor interpolation. However, a better result can be achieved by using more
|
||||
sophisticated [interpolation methods](http://en.wikipedia.org/wiki/Multivariate_interpolation) ,
|
||||
where a polynomial function is fit into some neighborhood of the computed pixel \f$(f_x(x,y),
|
||||
f_y(x,y))\f$, and then the value of the polynomial at \f$(f_x(x,y), f_y(x,y))\f$ is taken as the
|
||||
interpolated pixel value. In OpenCV, you can choose between several interpolation methods. See
|
||||
#resize for details.
|
||||
|
||||
@note The geometrical transformations do not work with `CV_8S` or `CV_32S` images.
|
||||
@note The geometrical transformations do not work with `CV_8S` or `CV_32S` images.
|
||||
|
||||
@defgroup imgproc_misc Miscellaneous Image Transformations
|
||||
@defgroup imgproc_draw Drawing Functions
|
||||
|
||||
Drawing functions work with matrices/images of arbitrary depth. The boundaries of the shapes can be
|
||||
rendered with antialiasing (implemented only for 8-bit images for now). All the functions include
|
||||
the parameter color that uses an RGB value (that may be constructed with the Scalar constructor )
|
||||
for color images and brightness for grayscale images. For color images, the channel ordering is
|
||||
normally *Blue, Green, Red*. This is what imshow, imread, and imwrite expect. So, if you form a
|
||||
color using the Scalar constructor, it should look like:
|
||||
Drawing functions work with matrices/images of arbitrary depth. The boundaries of the shapes can be
|
||||
rendered with antialiasing (implemented only for 8-bit images for now). All the functions include
|
||||
the parameter color that uses an RGB value (that may be constructed with the Scalar constructor )
|
||||
for color images and brightness for grayscale images. For color images, the channel ordering is
|
||||
normally *Blue, Green, Red*. This is what imshow, imread, and imwrite expect. So, if you form a
|
||||
color using the Scalar constructor, it should look like:
|
||||
|
||||
\f[\texttt{Scalar} (blue \_ component, green \_ component, red \_ component[, alpha \_ component])\f]
|
||||
\f[\texttt{Scalar} (blue \_ component, green \_ component, red \_ component[, alpha \_ component])\f]
|
||||
|
||||
If you are using your own image rendering and I/O functions, you can use any channel ordering. The
|
||||
drawing functions process each channel independently and do not depend on the channel order or even
|
||||
on the used color space. The whole image can be converted from BGR to RGB or to a different color
|
||||
space using cvtColor .
|
||||
If you are using your own image rendering and I/O functions, you can use any channel ordering. The
|
||||
drawing functions process each channel independently and do not depend on the channel order or even
|
||||
on the used color space. The whole image can be converted from BGR to RGB or to a different color
|
||||
space using cvtColor .
|
||||
|
||||
If a drawn figure is partially or completely outside the image, the drawing functions clip it. Also,
|
||||
many drawing functions can handle pixel coordinates specified with sub-pixel accuracy. This means
|
||||
that the coordinates can be passed as fixed-point numbers encoded as integers. The number of
|
||||
fractional bits is specified by the shift parameter and the real point coordinates are calculated as
|
||||
\f$\texttt{Point}(x,y)\rightarrow\texttt{Point2f}(x*2^{-shift},y*2^{-shift})\f$ . This feature is
|
||||
especially effective when rendering antialiased shapes.
|
||||
If a drawn figure is partially or completely outside the image, the drawing functions clip it. Also,
|
||||
many drawing functions can handle pixel coordinates specified with sub-pixel accuracy. This means
|
||||
that the coordinates can be passed as fixed-point numbers encoded as integers. The number of
|
||||
fractional bits is specified by the shift parameter and the real point coordinates are calculated as
|
||||
\f$\texttt{Point}(x,y)\rightarrow\texttt{Point2f}(x*2^{-shift},y*2^{-shift})\f$ . This feature is
|
||||
especially effective when rendering antialiased shapes.
|
||||
|
||||
@note The functions do not support alpha-transparency when the target image is 4-channel. In this
|
||||
case, the color[3] is simply copied to the repainted pixels. Thus, if you want to paint
|
||||
semi-transparent shapes, you can paint them in a separate buffer and then blend it with the main
|
||||
image.
|
||||
@note The functions do not support alpha-transparency when the target image is 4-channel. In this
|
||||
case, the color[3] is simply copied to the repainted pixels. Thus, if you want to paint
|
||||
semi-transparent shapes, you can paint them in a separate buffer and then blend it with the main
|
||||
image.
|
||||
|
||||
@defgroup imgproc_color_conversions Color Space Conversions
|
||||
@defgroup imgproc_colormap ColorMaps in OpenCV
|
||||
|
||||
The human perception isn't built for observing fine changes in grayscale images. Human eyes are more
|
||||
sensitive to observing changes between colors, so you often need to recolor your grayscale images to
|
||||
get a clue about them. OpenCV now comes with various colormaps to enhance the visualization in your
|
||||
computer vision application.
|
||||
The human perception isn't built for observing fine changes in grayscale images. Human eyes are more
|
||||
sensitive to observing changes between colors, so you often need to recolor your grayscale images to
|
||||
get a clue about them. OpenCV now comes with various colormaps to enhance the visualization in your
|
||||
computer vision application.
|
||||
|
||||
In OpenCV you only need applyColorMap to apply a colormap on a given image. The following sample
|
||||
code reads the path to an image from command line, applies a Jet colormap on it and shows the
|
||||
result:
|
||||
In OpenCV you only need applyColorMap to apply a colormap on a given image. The following sample
|
||||
code reads the path to an image from command line, applies a Jet colormap on it and shows the
|
||||
result:
|
||||
|
||||
@include snippets/imgproc_applyColorMap.cpp
|
||||
@include snippets/imgproc_applyColorMap.cpp
|
||||
|
||||
@see #ColormapTypes
|
||||
@see #ColormapTypes
|
||||
|
||||
@defgroup imgproc_subdiv2d Planar Subdivision
|
||||
|
||||
The Subdiv2D class described in this section is used to perform various planar subdivision on
|
||||
a set of 2D points (represented as vector of Point2f). OpenCV subdivides a plane into triangles
|
||||
using the Delaunay's algorithm, which corresponds to the dual graph of the Voronoi diagram.
|
||||
In the figure below, the Delaunay's triangulation is marked with black lines and the Voronoi
|
||||
diagram with red lines.
|
||||
The Subdiv2D class described in this section is used to perform various planar subdivision on
|
||||
a set of 2D points (represented as vector of Point2f). OpenCV subdivides a plane into triangles
|
||||
using the Delaunay's algorithm, which corresponds to the dual graph of the Voronoi diagram.
|
||||
In the figure below, the Delaunay's triangulation is marked with black lines and the Voronoi
|
||||
diagram with red lines.
|
||||
|
||||

|
||||

|
||||
|
||||
The subdivisions can be used for the 3D piece-wise transformation of a plane, morphing, fast
|
||||
location of points on the plane, building special graphs (such as NNG,RNG), and so forth.
|
||||
The subdivisions can be used for the 3D piece-wise transformation of a plane, morphing, fast
|
||||
location of points on the plane, building special graphs (such as NNG,RNG), and so forth.
|
||||
|
||||
@defgroup imgproc_hist Histograms
|
||||
@defgroup imgproc_shape Structural Analysis and Shape Descriptors
|
||||
@@ -190,7 +190,6 @@ location of points on the plane, building special graphs (such as NNG,RNG), and
|
||||
@defgroup imgproc_feature Feature Detection
|
||||
@defgroup imgproc_object Object Detection
|
||||
@defgroup imgproc_segmentation Image Segmentation
|
||||
@defgroup imgproc_c C API
|
||||
@defgroup imgproc_hal Hardware Acceleration Layer
|
||||
@{
|
||||
@defgroup imgproc_hal_functions Functions
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
var pos = url.lastIndexOf('/javadoc/');
|
||||
url = pos >= 0 ? (url.substring(0, pos) + '/javadoc/mymath.js') : (window.location.origin + '/mymath.js');
|
||||
var script = document.createElement('script');
|
||||
script.src = '@OPENCV_MATHJAX_RELPATH@/MathJax.js?config=TeX-AMS-MML_HTMLorMML,' + url;
|
||||
script.src = '@OPENCV_MATHJAX_RELPATH@/es5/tex-chtml.js,' + url;
|
||||
document.getElementsByTagName('head')[0].appendChild(script);
|
||||
</script>
|
||||
]]>
|
||||
|
||||
@@ -54,59 +54,61 @@
|
||||
@{
|
||||
@defgroup objdetect_cascade_classifier Cascade Classifier for Object Detection
|
||||
|
||||
The object detector described below has been initially proposed by Paul Viola @cite Viola01 and
|
||||
improved by Rainer Lienhart @cite Lienhart02 .
|
||||
The object detector described below has been initially proposed by Paul Viola @cite Viola01 and
|
||||
improved by Rainer Lienhart @cite Lienhart02 .
|
||||
|
||||
First, a classifier (namely a *cascade of boosted classifiers working with haar-like features*) is
|
||||
trained with a few hundred sample views of a particular object (i.e., a face or a car), called
|
||||
positive examples, that are scaled to the same size (say, 20x20), and negative examples - arbitrary
|
||||
images of the same size.
|
||||
First, a classifier (namely a *cascade of boosted classifiers working with haar-like features*) is
|
||||
trained with a few hundred sample views of a particular object (i.e., a face or a car), called
|
||||
positive examples, that are scaled to the same size (say, 20x20), and negative examples - arbitrary
|
||||
images of the same size.
|
||||
|
||||
After a classifier is trained, it can be applied to a region of interest (of the same size as used
|
||||
during the training) in an input image. The classifier outputs a "1" if the region is likely to show
|
||||
the object (i.e., face/car), and "0" otherwise. To search for the object in the whole image one can
|
||||
move the search window across the image and check every location using the classifier. The
|
||||
classifier is designed so that it can be easily "resized" in order to be able to find the objects of
|
||||
interest at different sizes, which is more efficient than resizing the image itself. So, to find an
|
||||
object of an unknown size in the image the scan procedure should be done several times at different
|
||||
scales.
|
||||
After a classifier is trained, it can be applied to a region of interest (of the same size as used
|
||||
during the training) in an input image. The classifier outputs a "1" if the region is likely to show
|
||||
the object (i.e., face/car), and "0" otherwise. To search for the object in the whole image one can
|
||||
move the search window across the image and check every location using the classifier. The
|
||||
classifier is designed so that it can be easily "resized" in order to be able to find the objects of
|
||||
interest at different sizes, which is more efficient than resizing the image itself. So, to find an
|
||||
object of an unknown size in the image the scan procedure should be done several times at different
|
||||
scales.
|
||||
|
||||
The word "cascade" in the classifier name means that the resultant classifier consists of several
|
||||
simpler classifiers (*stages*) that are applied subsequently to a region of interest until at some
|
||||
stage the candidate is rejected or all the stages are passed. The word "boosted" means that the
|
||||
classifiers at every stage of the cascade are complex themselves and they are built out of basic
|
||||
classifiers using one of four different boosting techniques (weighted voting). Currently Discrete
|
||||
Adaboost, Real Adaboost, Gentle Adaboost and Logitboost are supported. The basic classifiers are
|
||||
decision-tree classifiers with at least 2 leaves. Haar-like features are the input to the basic
|
||||
classifiers, and are calculated as described below. The current algorithm uses the following
|
||||
Haar-like features:
|
||||
The word "cascade" in the classifier name means that the resultant classifier consists of several
|
||||
simpler classifiers (*stages*) that are applied subsequently to a region of interest until at some
|
||||
stage the candidate is rejected or all the stages are passed. The word "boosted" means that the
|
||||
classifiers at every stage of the cascade are complex themselves and they are built out of basic
|
||||
classifiers using one of four different boosting techniques (weighted voting). Currently Discrete
|
||||
Adaboost, Real Adaboost, Gentle Adaboost and Logitboost are supported. The basic classifiers are
|
||||
decision-tree classifiers with at least 2 leaves. Haar-like features are the input to the basic
|
||||
classifiers, and are calculated as described below. The current algorithm uses the following
|
||||
Haar-like features:
|
||||
|
||||

|
||||

|
||||
|
||||
The feature used in a particular classifier is specified by its shape (1a, 2b etc.), position within
|
||||
the region of interest and the scale (this scale is not the same as the scale used at the detection
|
||||
stage, though these two scales are multiplied). For example, in the case of the third line feature
|
||||
(2c) the response is calculated as the difference between the sum of image pixels under the
|
||||
rectangle covering the whole feature (including the two white stripes and the black stripe in the
|
||||
middle) and the sum of the image pixels under the black stripe multiplied by 3 in order to
|
||||
compensate for the differences in the size of areas. The sums of pixel values over a rectangular
|
||||
regions are calculated rapidly using integral images (see below and the integral description).
|
||||
The feature used in a particular classifier is specified by its shape (1a, 2b etc.), position within
|
||||
the region of interest and the scale (this scale is not the same as the scale used at the detection
|
||||
stage, though these two scales are multiplied). For example, in the case of the third line feature
|
||||
(2c) the response is calculated as the difference between the sum of image pixels under the
|
||||
rectangle covering the whole feature (including the two white stripes and the black stripe in the
|
||||
middle) and the sum of the image pixels under the black stripe multiplied by 3 in order to
|
||||
compensate for the differences in the size of areas. The sums of pixel values over a rectangular
|
||||
regions are calculated rapidly using integral images (see below and the integral description).
|
||||
|
||||
Check @ref tutorial_cascade_classifier "the corresponding tutorial" for more details.
|
||||
Check @ref tutorial_cascade_classifier "the corresponding tutorial" for more details.
|
||||
|
||||
The following reference is for the detection part only. There is a separate application called
|
||||
opencv_traincascade that can train a cascade of boosted classifiers from a set of samples.
|
||||
The following reference is for the detection part only. There is a separate application called
|
||||
opencv_traincascade that can train a cascade of boosted classifiers from a set of samples.
|
||||
|
||||
@note In the new C++ interface it is also possible to use LBP (local binary pattern) features in
|
||||
addition to Haar-like features. .. [Viola01] Paul Viola and Michael J. Jones. Rapid Object Detection
|
||||
using a Boosted Cascade of Simple Features. IEEE CVPR, 2001. The paper is available online at
|
||||
<https://github.com/SvHey/thesis/blob/master/Literature/ObjectDetection/violaJones_CVPR2001.pdf>
|
||||
@note In the new C++ interface it is also possible to use LBP (local binary pattern) features in
|
||||
addition to Haar-like features. .. [Viola01] Paul Viola and Michael J. Jones. Rapid Object Detection
|
||||
using a Boosted Cascade of Simple Features. IEEE CVPR, 2001. The paper is available online at
|
||||
<https://github.com/SvHey/thesis/blob/master/Literature/ObjectDetection/violaJones_CVPR2001.pdf>
|
||||
|
||||
@defgroup objdetect_hog HOG (Histogram of Oriented Gradients) descriptor and object detector
|
||||
@defgroup objdetect_barcode Barcode detection and decoding
|
||||
@defgroup objdetect_qrcode QRCode detection and encoding
|
||||
@defgroup objdetect_dnn_face DNN-based face detection and recognition
|
||||
Check @ref tutorial_dnn_face "the corresponding tutorial" for more details.
|
||||
|
||||
Check @ref tutorial_dnn_face "the corresponding tutorial" for more details.
|
||||
|
||||
@defgroup objdetect_common Common functions and classes
|
||||
@defgroup objdetect_aruco ArUco markers and boards detection for robust camera pose estimation
|
||||
@{
|
||||
|
||||
@@ -55,30 +55,29 @@ This module includes photo processing algorithms
|
||||
@defgroup photo_denoise Denoising
|
||||
@defgroup photo_hdr HDR imaging
|
||||
|
||||
This section describes high dynamic range imaging algorithms namely tonemapping, exposure alignment,
|
||||
camera calibration with multiple exposures and exposure fusion.
|
||||
This section describes high dynamic range imaging algorithms namely tonemapping, exposure alignment,
|
||||
camera calibration with multiple exposures and exposure fusion.
|
||||
|
||||
@defgroup photo_decolor Contrast Preserving Decolorization
|
||||
|
||||
Useful links:
|
||||
Useful links:
|
||||
|
||||
http://www.cse.cuhk.edu.hk/leojia/projects/color2gray/index.html
|
||||
http://www.cse.cuhk.edu.hk/leojia/projects/color2gray/index.html
|
||||
|
||||
@defgroup photo_clone Seamless Cloning
|
||||
|
||||
Useful links:
|
||||
Useful links:
|
||||
|
||||
https://www.learnopencv.com/seamless-cloning-using-opencv-python-cpp
|
||||
https://www.learnopencv.com/seamless-cloning-using-opencv-python-cpp
|
||||
|
||||
@defgroup photo_render Non-Photorealistic Rendering
|
||||
|
||||
Useful links:
|
||||
Useful links:
|
||||
|
||||
http://www.inf.ufrgs.br/~eslgastal/DomainTransform
|
||||
http://www.inf.ufrgs.br/~eslgastal/DomainTransform
|
||||
|
||||
https://www.learnopencv.com/non-photorealistic-rendering-using-opencv-python-c/
|
||||
https://www.learnopencv.com/non-photorealistic-rendering-using-opencv-python-c/
|
||||
|
||||
@defgroup photo_c C API
|
||||
@}
|
||||
*/
|
||||
|
||||
|
||||
@@ -49,7 +49,6 @@
|
||||
@{
|
||||
@defgroup video_motion Motion Analysis
|
||||
@defgroup video_track Object Tracking
|
||||
@defgroup video_c C API
|
||||
@}
|
||||
*/
|
||||
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
Video I/O with OpenCV Overview {#videoio_overview}
|
||||
===================================
|
||||
==============================
|
||||
|
||||
### See also:
|
||||
@tableofcontents
|
||||
|
||||
@sa
|
||||
- @ref videoio "Video I/O Code Reference"
|
||||
- Tutorials: @ref tutorial_table_of_content_app
|
||||
|
||||
General Information
|
||||
===================
|
||||
-------------------
|
||||
|
||||
The OpenCV @ref videoio module is a set of classes and functions to read and write video or images sequence.
|
||||
|
||||
@@ -53,10 +55,11 @@ cv::VideoCapture cap(filename, cv::CAP_MSMF);
|
||||
//or specify the apiPreference with open
|
||||
cap.open(filename, cv::CAP_MSMF);
|
||||
```
|
||||
|
||||
@sa cv::VideoCapture::open() , cv::VideoCapture::VideoCapture()
|
||||
|
||||
#### How to enable backends
|
||||
|
||||
How to enable backends
|
||||
----------------------
|
||||
|
||||
There are two kinds of videoio backends: built-in backends and plugins which will be loaded at runtime (since OpenCV 4.1.0). Use functions cv::videoio_registry::getBackends, cv::videoio_registry::hasBackend and cv::videoio_registry::getBackendName to check actual presence of backend during runtime.
|
||||
|
||||
@@ -71,7 +74,9 @@ To enable dynamically-loaded videoio backend (currently supported: GStreamer and
|
||||
|
||||
@note Don't forget to clean CMake cache when switching between these two modes
|
||||
|
||||
#### Use 3rd party drivers or cameras
|
||||
|
||||
Use 3rd party drivers or cameras
|
||||
--------------------------------
|
||||
|
||||
Many industrial cameras or some video I/O devices don't provide standard driver interfaces
|
||||
for the operating system. Thus you can't use VideoCapture or VideoWriter with these devices.
|
||||
@@ -83,6 +88,7 @@ It is a common case that these libraries read/write images from/to a memory buff
|
||||
possible to make a `Mat` header for memory buffer (user-allocated data) and process it
|
||||
in-place using OpenCV functions. See cv::Mat::Mat() for more details.
|
||||
|
||||
|
||||
The FFmpeg library
|
||||
------------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user