目录
1.点的表示:Point_ Point3_
2.尺寸的表示:Size_
3.Vec类:描述多通道Mat的像素
4.Matx:已知尺寸的小Mat模板类
5.颜色类Scalar:
6.Rect:矩形表示类
7.Range类
8.cv::Ptr指针模板
opencv中Point_的定义(Point3_基本相同):
// 定义
typedef Point_ Point2i;
typedef Point_ Point2l;
typedef Point_ Point2f;
typedef Point_ Point2d;
typedef Point2i Point;
typedef Point3_ Point3i;
typedef Point3_ Point3f;
typedef Point3_ Point3d;
//成员函数
//点积(数量积) x1*x1+y1*y2
_Tp dot(const Point_& pt) const;
//双精度点积
double ddot(const Point_& pt) const;
//叉乘(向量积)x1*y2-y1*x2
double cross(const Point_& pt) const;
//检查该点是否在指定矩形内
bool inside(const Rect_<_Tp>& r) const;
opencv中Size_的定义:
//定义
typedef Size_ Size2i;
typedef Size_ Size2l;
typedef Size_ Size2f;
typedef Size_ Size2d;
typedef Size2i Size;
//成员函数
//面积(width*height)
_Tp area() const;
//面积是否为0
bool empty() const;
typedef Vec Vec2i;
typedef Vec Vec3i;
typedef Vec Vec4i;
typedef Vec Vec6i;
typedef Vec Vec8i;
typedef Vec Vec2f;
typedef Vec Vec3f;
typedef Vec Vec4f;
typedef Vec Vec6f;
typedef Vec Vec2d;
typedef Vec Vec3d;
typedef Vec Vec4d;
typedef Vec Vec6d;
//
cv::Mat Img(10, 10, CV_8UC3,Scalar(255,255,255));
uchar pixel = Img.at(9, 9)[0];
typedef Matx Matx12f;
typedef Matx Matx12d;
typedef Matx Matx13f;
typedef Matx Matx13d;
typedef Matx Matx14f;
typedef Matx Matx14d;
typedef Matx Matx16f;
typedef Matx Matx16d;
typedef Matx Matx21f;
typedef Matx Matx21d;
typedef Matx Matx31f;
typedef Matx Matx31d;
typedef Matx Matx41f;
typedef Matx Matx41d;
typedef Matx Matx61f;
typedef Matx Matx61d;
typedef Matx Matx22f;
typedef Matx Matx22d;
typedef Matx Matx23f;
typedef Matx Matx23d;
typedef Matx Matx32f;
typedef Matx Matx32d;
typedef Matx Matx33f;
typedef Matx Matx33d;
typedef Matx Matx34f;
typedef Matx Matx34d;
typedef Matx Matx43f;
typedef Matx Matx43d;
typedef Matx Matx44f;
typedef Matx Matx44d;
typedef Matx Matx66f;
typedef Matx Matx66d;
含有4个元素的数组,在opencv中被用来传递像素值,RGB三个像素值,如用不到第四个,则不需要写出来。
template class Scalar_ : public Vec<_Tp, 4>
typedef Scalar_ Scalar;
//定义
typedef Rect_ Rect2i;
typedef Rect_ Rect2f;
typedef Rect_ Rect2d;
typedef Rect2i Rect;
//成员函数
//返回左上角坐标
Point_<_Tp> tl() const;
//返回右下角坐标
Point_<_Tp> br() const;
//返回矩形框的宽与高
Size_<_Tp> size() const;
//面积
_Tp area() const;
//面积是否为0
bool empty() const;
//判断点是否在矩形内
bool contains(const Point_<_Tp>& pt) const;
多用于指定Mat中的连续的多行或列,Range(a,b) 表示范围从a到b的前闭后开的区间[a,b)。
//定义
class CV_EXPORTS Range
{
public:
Range();
Range(int _start, int _end);
Range(const CvSlice& slice);
//return end - start
int size() const;
//是否为空:start==end
bool empty() const;
static Range all();
operator CvSlice() const;
int start, end;
};
//应用举例:
cv::Mat Img(10, 10, CV_8UC3,Scalar(255));
//dst提取Img的第1列到第4列,,Mat(行,列)
cv::Mat dst = Img(Range::all(), Range(1,5));
cv::Ptr与C++ 中智能指针share_ptr类似,与new delete相比,智能指针管理动态内存最大的优点就是可以自动释放内存,避免内存泄漏。智能指针也是模板,因此建立一个智能指针时,必须提供额外的信息—指针指向的类型。与vector模板一样,在尖括号内给出类型,如:
share_ptr str1;
//opencv中定义对象时,通常使用cv::Ptr。
Ptr importer;
Ptr orb = ORB::create();