Basic Structures
main data structures used in opencv.
OpenCV中的 C 结构 | OpenCV中的 C++ 封装 | EmguCV中的 C# 封装 |
CvPoint CvPoint2D32f CvPoint2D64f CvPoint3D32f CvPoint3D64f | Point_<typename _Tp> Point3_<typename _Tp> Point_<int>(Point2i, Point) Point_<float>(Point2f) Point_<double>(Point2d) Point3_<float>(Point3f) Point3_<double>(Point3d) Point3_<int>(Point3i) | System.Drawing.Point System.Drawing.PointF MCvPoint2D64f MCvPoint3D32f MCvPoint3D64f |
CvSize CvSize2D32f | Size_<typename _Tp> Size_<int>(Size, Size2i) Size_<float>(Size2f) | System.Drawing.Size System.Drawing.SizeF |
CvRect | Rect_<typename _Tp> Rect_<int>(Rect) | System.Drawing.Rectangle |
CvScalar (A container for 1-,2-,3-or4-tuples of doubles) | Scalar_<typename _Tp> Scalar_<double>(Scalar) (:public Vec<_Tp, 4>) (Scalar is widely used to pass pixel values) | MCvScalar |
CvBox2D | RotatedRect | MCvBox2D |
CvMat (A multi-channel dense matrix) | Mat | MCvMat MCvHistogram Matrix<TDepath> |
CvMatND (Multi-dimensional dense multi-channel array) | Mat | MCvMatND MatND<TDepth> |
IplImage | Mat | MIplImage Image<TColor, TDepth> |
CvSparseMat | SparseMat | SparseMatrix<TDepath> |
CvArr (“metatype”only used as function parameter) | InputArray OutputArray | CvArray<TDepth> |
CvTermCriteria (Termination criteria for iterative algorithms) | TermCriteria | MCvTermCriteria |
Dynamic Structures
for creating growable sequences and other dynamic data structures allocated in CvMemStorage. If you use the new C++, Python, Java etc interface, you will unlikely need this functionality. Use std::vector or other high-level data structures instead.
OpenCv中的 C 结构 | OpenCV中的 C++ 封装 | Emgu.CV中的 C# 封装 |
CvMemStorage | MemStorage | MemStorage |
CvMemBlock | ||
CvMemStoragePos | ||
CvSeq | Seq<typename _Tp> | MCvSeq Seq<T> |
CvSlice | Range | MCvSlice |
CvSet (derived from CvSeq) | MCvSet | |
CvGraph (derived from CvSet) | ||
CvGraphScanner (used for depth-first graph traversal) | ||
CvTreeNodeIterator (used to traverse trees of sequences) |
Extra C++ Basic Structures
some basic structures in C++ version.
Matx<typename _Tp, int m, int n>
- typedef Matx<float, 1, 2> Matx12f;
- typedef Matx<double, 6, 6> Matx66d;
Vec<typename _Tp, int n> (:public Matx<_Tp, n, 1>)
- typedef Vec<uchar, 2> Vec2b;
- typedef Vec<short, 4> Vec4s;
- typedef Vec<int, 3> Vec3i;
- ...float,double...
Ptr<typename _Tp> for smart reference-counting pointers
Matrix Expressions: (Mat A, B; Scalar s; double alpha)
- Addition, substraction, negation: A + B, A - B, A + s, A - s, s - A, -A
- Scaling: A * alpha
- Per-element multiplication and division: A.mul(B), A/B, alpha/A
- Matrix multiplication: A*B
- Transposition: A.t() (means AT)
- Matrix inversion and pseudo-inversion, solving linear systems and least-squares problems: A.inv([method]) (~ A-1) , A.inv([method])*B (~ X: AX=B)
- Comparison: A cmpop B, A cmpop alpha, alpha cmpop A, where cmpop is one of : >, >=, ==, !=, <=, <. The result of comparison is an 8-bit single channel mask whose elements are set to 255 (if the particular element or pair of elements satisfy the condition) or 0.
- Bitwise logical operations: A logicop B, A logicop s, s logicop A, ~A, where logicop is one of : &, |, ^.
- Element-wise minimum and maximum: min(A, B), min(A, alpha), max(A, B), max(A, alpha)
- Element-wise absolute value: abs(A)
- Cross-product, dot-product: A.cross(B) A.dot(B)
- Any function of matrix or matrices and scalars that returns a matrix or a scalar, such as norm, mean, sum, countNonZero, trace, determinant, repeat, and others.
- Matrix initializers ( Mat::eye(), Mat::zeros(), Mat::ones() ), matrix comma-separated initializers, matrix constructors and operators that extract sub-matrices (see Mat description).
- Mat_<destination_type>() constructors to cast the result to the proper type.