opencv 中常用的数据类型

1.点的表示:Point类
Point类数据结构表示了二维坐标系下的点,有数据成员x,y。
用法;
Point p;
p.x = 1, p.y = 2;
或者:
Point p = Point(1, 2);
另外,在定义中Point_<int>、Point2i和Point相互等价
Point_<float>和Point2f相互等价


2.颜色的表示:Scalar类
Scalar()表示具有四个元素的数组,在opencv中通常用于传递与设置像素值,如RGB的颜色值。而RGB的颜色值为三个参数(三通道),对与Scalar函数来说,第四个参数可以忽略不写出。
例:
Scalar(a, b, c);//定义的RGB颜色值中红色分量为a,绿色分量为b,蓝色分量为a;

Scalar类的源头为Scalar_类,而Scalar_类是Vec4x的一个变种,常用的Scalar就是Scalar_<double>。故函数参数的输入可以是Mat也可以使Scalar。


3.尺寸表示类:Size类

在Size类相关源码中将Size_<int> 的别名定为Size和Size2i。

Size_的构造函数为:

  1. Size_(_Tp _width, _Tp _height);  
  2.     Size_(const Size_& sz);  
  3.     Size_(const CvSize& sz);  
  4.     Size_(const CvSize2D32f& sz);  
  5.     Size_(const Point_<_Tp>& pt);  
常用到的就是: Size_(_Tp _width, _Tp _height); 

另外在该类中还定义了公共数据成员width、height,可直接调用。

4.矩形表示类:Rect类

Rect类的成员变量有x、y、width、height,分别为左上角点的坐标和矩形的长和高。
常用的成员函数有:
Size()——返回值为对应的Size对象
area()——返回矩形的面积
contains(Point)——判断点是否在矩形里
inside(Rect)——判断矩形是否在该矩形里
tl()——返回左上角点的坐标
br()——返回右下角的坐标
求两矩形交集:
Rect rect = rect1 & rect2;
求两矩形并集:
Rect rect = rect1 | rect2;
矩形平移:
Rect rectShift = rect + point;
矩形缩放:
Rect rect = rect1 + size;

5.Matx 是个轻量级的Mat,必须在使用前确定其尺寸,比如一个2*3的float型Matx,可以声明为:Matx23f;


6.Vec是opencv中的一个向量类
Vec<int, n> 就是一个向量类,可以用来定义向量对象等。
第一个参数int标识Vec中储存的为int类型向量
第二个参数n为一个整形数值,表示每个Vec对象中储存的是n个int值,即为n维向量。


7.Rang类
Range类通常用于确定图片的一块范围,类的源代码:

  1. class Range  
  2. {  
  3. public:  
  4. ...  
  5. int start, end;  
  6. };  
应用:

截取原图的指定位置大小的区域

roi_img = src_img(Range(0,100),Range(50,200));

这里截取的就是原图第0行至第99行,第50列至199列的区域图像.

这里要注意的就是Range的两个参数范围分别为左包含右不包含


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值