mirror of
https://github.com/opencv/opencv.git
synced 2024-11-25 11:40:44 +08:00
Add a note about cxx11 range-based loop in Mat_ documentation
This commit is contained in:
parent
e5aa213554
commit
267fdc4c91
@ -2063,7 +2063,7 @@ protected:
|
||||
|
||||
/** @brief Template matrix class derived from Mat
|
||||
|
||||
@code
|
||||
@code{.cpp}
|
||||
template<typename _Tp> class Mat_ : public Mat
|
||||
{
|
||||
public:
|
||||
@ -2075,7 +2075,7 @@ protected:
|
||||
The class `Mat_<_Tp>` is a *thin* template wrapper on top of the Mat class. It does not have any
|
||||
extra data fields. Nor this class nor Mat has any virtual methods. Thus, references or pointers to
|
||||
these two classes can be freely but carefully converted one to another. For example:
|
||||
@code
|
||||
@code{.cpp}
|
||||
// create a 100x100 8-bit matrix
|
||||
Mat M(100,100,CV_8U);
|
||||
// this will be compiled fine. no any data conversion will be done.
|
||||
@ -2087,7 +2087,7 @@ While Mat is sufficient in most cases, Mat_ can be more convenient if you use a
|
||||
access operations and if you know matrix type at the compilation time. Note that
|
||||
`Mat::at(int y,int x)` and `Mat_::operator()(int y,int x)` do absolutely the same
|
||||
and run at the same speed, but the latter is certainly shorter:
|
||||
@code
|
||||
@code{.cpp}
|
||||
Mat_<double> M(20,20);
|
||||
for(int i = 0; i < M.rows; i++)
|
||||
for(int j = 0; j < M.cols; j++)
|
||||
@ -2097,7 +2097,7 @@ and run at the same speed, but the latter is certainly shorter:
|
||||
cout << E.at<double>(0,0)/E.at<double>(M.rows-1,0);
|
||||
@endcode
|
||||
To use Mat_ for multi-channel images/matrices, pass Vec as a Mat_ parameter:
|
||||
@code
|
||||
@code{.cpp}
|
||||
// allocate a 320x240 color image and fill it with green (in RGB space)
|
||||
Mat_<Vec3b> img(240, 320, Vec3b(0,255,0));
|
||||
// now draw a diagonal white line
|
||||
@ -2107,6 +2107,17 @@ To use Mat_ for multi-channel images/matrices, pass Vec as a Mat_ parameter:
|
||||
for(int i = 0; i < img.rows; i++)
|
||||
for(int j = 0; j < img.cols; j++)
|
||||
img(i,j)[2] ^= (uchar)(i ^ j);
|
||||
@endcode
|
||||
Mat_ is fully compatible with C++11 range-based for loop. For example such loop
|
||||
can be used to safely apply look-up table:
|
||||
@code{.cpp}
|
||||
void applyTable(Mat_<uchar>& I, const uchar* const table)
|
||||
{
|
||||
for(auto& pixel : I)
|
||||
{
|
||||
pixel = table[pixel];
|
||||
}
|
||||
}
|
||||
@endcode
|
||||
*/
|
||||
template<typename _Tp> class Mat_ : public Mat
|
||||
|
Loading…
Reference in New Issue
Block a user