Opencv3 基础数据类型
- b:unsigned character
- s:short integer
- i:32-bit integer
- f:32-bit floating-point number
- d:64-bit floating-point number
Point: Point2i, Point3f
操作 | 例子 |
---|---|
默认构造器 | cv::Point2i p; cv::Point3f p; |
复制构造器 | cv::Point3f p2( p1 ); |
赋值构造器 | cv::Point2i( x0, x1 ); cv::Point3f( x0, x1, x2 ); |
转换为固定 vector 类 | (cv::Vec3f) p; |
元素访问 | p.x; p.y; // and for three-dimensional // point classes: p.z |
点乘 | float x = p1.dot( p2 ); |
双精度点乘 | double x = p1.ddot( p2 ); |
叉乘 | p1.cross( p2 ); // (for three-dimensional point // classes only) |
查询点是否位于矩形内 | p.inside( r ); // (for two-dimensional point // classes only) |
Scalar : fixed vector class
操作 | 例子 |
---|---|
默认构造器 | cv::Scalar s; |
复制构造器 | cv::Scalar s2( s1 ); |
赋值构造器 | cv::Scalar s( x0 ); // 只初始化第一个元素 cv::Scalar s( x0, x1, x2, x3 ); |
元素级乘法 | s1.mul( s2 ); |
(Quaternion) conjugation | s.conj(); // (returns cv::Scalar(s0,-s1,-s2,-s2)) |
(Quaternion) real test | s.isReal(); // (returns true iff s1==s2==s3==0) |
Size: Size, Size2i, Size2f
操作 | 例子 |
---|---|
默认构造器 | cv::Size sz; cv::Size2i sz; cv::Size2f sz; |
复制构造器 | cv::Size sz2( sz1 ); |
赋值构造器 | cv::Size2f sz( w, h ); |
元素访问 | sz.width; sz.height; |
计算面积 | sz.area(); |
Rect
操作 | 例子 |
---|---|
默认构造器 | cv::Rect r; |
复制构造器 | cv::Rect r2( r1 ); |
赋值构造器 | cv::Rect( x, y, w, h ); |
使用左上点和 Size 构造 | cv::Rect( p, sz ); |
使用两个脚点构造 | cv::Rect( p1, p2 ); |
元素访问 | r.x; r.y; r.width; r.height; |
计算面积 | r.area(); |
提取左上角 | r.tl(); |
提取右下角 | r.br(); |
判断点是否在 | r.contains( p ); |
矩形操作
操作 | 例子 |
---|---|
两个矩形的交集 | cv::Rect r3 = r1 & r2; r1 &= r2; |
包含两个矩形的最小矩形 | cv::Rect r3 = r1 | r2; r1 |= r2; |
平移矩形 | cv::Rect rx = r + x; r += x; |
放缩矩形 | cv::Rect rs = r + s; r += s; |
判断矩形是否相等 | bool eq = (r1 == r2); |
判断矩形是否不相等 | bool ne = (r1 != r2); |
RotatedRect
操作 | 例子 |
---|---|
默认构造器 | cv::RotatedRect rr(); |
复制构造器 | cv::RotatedRect rr2( rr1 ); |
从两点构造 | cv::RotatedRect( p1, p2 ); |
从点(中心店),Size,旋转角度构造 | cv::RotatedRect rr( p, sz, theta ) ; |
元素访问 | rr.center; rr.size; rr.angle; |
返回四个点 | rr.points( pts[4] ); |
Fixed Matrix: Matx{1,2,...}{1,2,...}{f,d}
操作 | 例子 |
---|---|
默认构造器 | cv::Matx33f m33f; cv::Matx43d m43d; |
复制构造器 | cv::Matx22d m22d( n22d ); |
赋值构造器 | cv::Matx21f m(x0,x1); cv::Matx44d m(x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15); |
统一元素矩阵 | m33f = cv::Matx33f::all( x ); |
全零矩阵 | m23d = cv::Matx23d::zeros(); |
全一矩阵 | m16f = cv::Matx16f::ones(); |
单位矩阵 | m33f = cv::Matx33f::eye(); |
提取对角元素 | m31f = cv::Matx33f::diag(); // Create a matrix of // size 3-by-1 of floats |
均匀分布矩阵 | m33f = cv::Matx33f::randu( min, max ); |
正态分布矩阵 | m33f = cv::Matx33f::nrandn( mean, variance ); |
元素访问 | m( i, j ), m( i ); // one argument for // one-dimensional matrices only |
矩阵代数 | m1 = m0; m0 * m1; m0 + m1; m0 – m1; |
数乘 | m * a; a * m; m / a; |
比较 | m1 == m2; m1 != m2; |
点乘 | m1.dot( m2 ); // (sum of element-wise // multiplications, precision of m) |
双精度点乘 | m1.ddot( m2 ); // (sum of element-wise multiplications, // double precision) |
矩阵变形 | m91f = m33f.reshape<9,1>(); |
强制转换 | m44f = (Matx44f) m44d |
提取(i,j)的子矩阵 | m44f.get_minor<2, 2>( i, j ); |
提取行 | m14f = m44f.row( i ); |
提取列 | m41f = m44f.col( j ); |
提取矩阵对角线元素 | m41f = m44f.diag(); |
转置 | n44f = m44f.t(); |
取逆 | n44f = m44f.inv( method ); // (default method is // cv::DECOMP_LU) |
解线性方程 | m31f = m33f.solve( rhs31f, method ) m32f = m33f.solve<2>( rhs32f, method ); // (template forma); // default method is DECOMP_LU) |
元素级乘法 | m1.mul( m2 ); |
Fixed Vector: Vec{2,3,4,6}{b,s,w,i,f,d}
操作 | 例子 |
---|---|
默认构造器 | Vec2s v2s; Vec6f v6f; // etc... |
复制构造器 | Vec3f u3f( v3f ); |
赋值构造器 | Vec2f v2f(x0,x1); Vec6d v6d(x0,x1,x2,x3,x4,x5); |
元素访问 | v4f[ i ]; v3w( j ); // (operator() and operator[] // both work) |
向量叉乘 | v3f.cross( u3f ); |
Complex Number
操作 | 例子 |
---|---|
默认构造器 | cv::Complexf z1; cv::Complexd z2; |
复制构造器 | cv::Complexf z2( z1 ); cv::Complexf u2f( v2f ); |
赋值构造器 | cv::Complexd z1(re0); cv::Complexd(re0,im1) ; |
元素访问 | z1.re; z1.im; |
共轭 | z2 = z1.conj(); |