C++ 11
二维点Point_:x,y二维点对Point_,是一个模板类;可直接访问数据成员x,y;具有+、-、==、!=这4个基本的操作,和点乘、叉乘等操作;提供了inside函数来判断一个点是否在矩形区域内;为方便使用,opencv对常用类型进行了定义:typedef Point_
三维点Point3_:x,y,z常用类型为:typedef Point3_
尺寸Size_;height,widthSize可访问的成员变量是height和width。还定义area函数来求面积。常用类型为:typedef Size_
矩形区域Rect_:左上角,长,宽rect = rect ± point //矩形偏移rect = rect ± size //改变大小rect += point, rect -= point, rect += size, rect -= size //(augmenting operations)rect = rect1 & rect2 //矩形交集rect = rect1 | rect2 //包含r1r2的最小矩形 RotatedRect旋转矩形由中心、边长、旋转角度决定的;RotatedRect::RotatedRect(const Point2f& center, const Size2f& size, float angle)// 中心点(不是左上角坐标),尺寸,旋转角度RotatedRect rRect = RotatedRect(Point2f(100,100), Size2f(100,50), 30);示例:int main(void) { Mat bg(200,200,CV_8UC3,Scalar(0)); imshow('',bg); RotatedRect rRect(Point2f(100,100),Size(100,100),40); Point2f vertices[4]; rRect.points(vertices); for(int i = 0; i < 4;++i) line(bg,vertices[i],vertices[(i+1)%4],Scalar(0,255,0)); Rect brect = rRect.boundingRect(); rectangle(bg,brect,Scalar(255,0,0)); imshow('',bg); waitKey(); return 0; }
小矩形Matx:用来记录一些小的矩形;且这些矩形在编译前大小就固定了;typedef Matx
短向量Vec:其实是元素较少的向量。typedef Vec
四维向量Scalar_;Scalar_类其实是用Vec
范围Range:(start, end)Range类用来指定连续的子序列;class CV_EXPORTS Range { public: Range(); Range(int _start, int _end); Range(const CvSlice& slice); int size() const; bool empty() const; static Range all(); operator CvSlice() const; int start, end; };
矩阵结构Mat:既可以储存二维矩阵,也可以储存高维矩阵;多维情况: int main(void) { int sz[]={4,5,6}; Mat img(3,sz,CV_8U);//3维数组 cout<
小矩形Matx;
短向量Vec: 其实是元素较少的向量。 typedef Vec Vec2b;
四维向量Scalar_; Scalar_类其实是用Vec派生下来的,