OpenCV(五) Opencv中 core 核心模块详解—— 常见的数据结构
2017-08-05 10:34
465 查看
今天,虽然是周六,但是仍然要学习啊,,我这个菜鸟啥时候才能变大神啊,哎~~下面开始介绍 OpenCV 中常见的类和函数。
1、点类 Point
Point 类定义的是二维坐标系下的点,所以,它有两个成员:x 和 y。程序如下:
2、矩形类 Rect
Rect类的成员变量有四个:x,y 表示矩形左上角的坐标。width 和 height 分别表示矩形的宽和高。Rect 常见的成员函数有 :
Size() 的返回值为尺寸Size :返回的是 [宽 × 高]
area() 返回的是矩形的面积;
contains(Point) 判断点是是否在矩形内部;rect.contains(point),如果在,返回1,如果不在,返回0
tl() 和 br() 分别表示矩形的左上角和右下角的坐标值。。
int main()
{
Mat img = imread("test.jpg", 1);
//矩形类的表示
Rect rect1(2,5,10,10);
cout << rect1 << endl; //输出的是 [10 × 10 from (2,5)]
cout << rect1.area() << endl; //输出的是100
cout << rect1.tl() << "\t" << rect1.br() << endl; //输出的是[2,5],[12,15]
cout << rect1.size() << endl; //输出的是 [10 × 10]
Point point1(3,7),point2(0,0);
cout << rect1.contains(point1) << endl; //返回的是1
cout << rect1.contains(point2) << endl; //返回的是0
//求两个矩形的交集和并集
Rect rect2(1,3,8,8);
Rect rect3 = rect1 & rect2;
cout << rect3 << endl; //输出的是 [7 x 6 from (2, 5)]
Rect rect4 = rect1 | rect2;
cout << rect4 << endl; //输出的是 [11 x 12 from (1, 3)]
//对矩形进行平移和放缩
Point point3(1,2);
Size size(100,100);
Rect rect5 = rect1 + point1;
Rect rect6 = rect2 + size;
cout << rect5 << endl; //输出结果是[10 x 10 from (5, 12)],,进行平移
cout << rect6 << endl; //输出结果为 [108 x 108 from (1, 3)],进行了扩大
}
3、颜色的表示:Scalar类
Scalar()有四个元素:R,G,B,A,如果第四个参数用不到,直接不写即可。
4、颜色空间转换函数 cvtColor()函数
这个函数是将颜色空间进行转换的函数,能够实现 RGB 图像向 HSI、灰度图、HSV转换。函数的使用方法如下。
cvtColor(srcImage, dstImage,转换标示符号);
转换标示符号如下
1、点类 Point
Point 类定义的是二维坐标系下的点,所以,它有两个成员:x 和 y。程序如下:
int main() { // 点的表示 Point point_A; //是整型的 point_A.x = 5; //如果是5.2,输出也是 5 point_A.y = 2; cout << point_A << endl; //输出的是 [5,2] }此外,Opencv 还有这样的定义:
typedef Point <int> Point2i typedef Point2i Point typedef Point<float> Point2f所以,以后碰到 Point,Point2i,Point <int> 是完全等价的,都是表示二维坐标系下的整型点。
2、矩形类 Rect
Rect类的成员变量有四个:x,y 表示矩形左上角的坐标。width 和 height 分别表示矩形的宽和高。Rect 常见的成员函数有 :
Size() 的返回值为尺寸Size :返回的是 [宽 × 高]
area() 返回的是矩形的面积;
contains(Point) 判断点是是否在矩形内部;rect.contains(point),如果在,返回1,如果不在,返回0
tl() 和 br() 分别表示矩形的左上角和右下角的坐标值。。
int main()
{
Mat img = imread("test.jpg", 1);
//矩形类的表示
Rect rect1(2,5,10,10);
cout << rect1 << endl; //输出的是 [10 × 10 from (2,5)]
cout << rect1.area() << endl; //输出的是100
cout << rect1.tl() << "\t" << rect1.br() << endl; //输出的是[2,5],[12,15]
cout << rect1.size() << endl; //输出的是 [10 × 10]
Point point1(3,7),point2(0,0);
cout << rect1.contains(point1) << endl; //返回的是1
cout << rect1.contains(point2) << endl; //返回的是0
//求两个矩形的交集和并集
Rect rect2(1,3,8,8);
Rect rect3 = rect1 & rect2;
cout << rect3 << endl; //输出的是 [7 x 6 from (2, 5)]
Rect rect4 = rect1 | rect2;
cout << rect4 << endl; //输出的是 [11 x 12 from (1, 3)]
//对矩形进行平移和放缩
Point point3(1,2);
Size size(100,100);
Rect rect5 = rect1 + point1;
Rect rect6 = rect2 + size;
cout << rect5 << endl; //输出结果是[10 x 10 from (5, 12)],,进行平移
cout << rect6 << endl; //输出结果为 [108 x 108 from (1, 3)],进行了扩大
}
3、颜色的表示:Scalar类
Scalar()有四个元素:R,G,B,A,如果第四个参数用不到,直接不写即可。
4、颜色空间转换函数 cvtColor()函数
这个函数是将颜色空间进行转换的函数,能够实现 RGB 图像向 HSI、灰度图、HSV转换。函数的使用方法如下。
cvtColor(srcImage, dstImage,转换标示符号);
转换标示符号如下
相关文章推荐
- OpenCV(四) Opencv中 core 核心模块详解—— Mat类(二)之常见函数及操作
- OpenCV(三) Opencv中 core 核心模块详解—— Mat类(一)
- OpenCV(六) Opencv中 core 核心模块详解——访问图像像素的几种方法
- OpenCV(七) Opencv中 core 核心模块详解—提取感兴趣区域Roi
- OpenCV学习笔记2 OpenCV核心模块与核心功能Core Module & Core Functionality(一)
- OpenCV学习笔记4 OpenCV核心模块与核心功能Core Module & Core Functionality(三)
- OpenCV学习笔记3 OpenCV核心模块与核心功能Core Module & Core Functionality(二)
- OpenCV之core 模块. 核心功能(1)Mat - 基本图像容器 OpenCV如何扫描图像、利用查找表和计时 矩阵的掩码操作 使用OpenCV对两幅图像求和(求混合(blending))
- OpenCV学习笔记5 OpenCV核心模块与核心功能Core Module & Core Functionality(四)
- OpenCV之core 模块. 核心功能(2)基本绘图 随机数发生器&绘制文字 离散傅立叶变换 输入输出XML和YAML文件 与 OpenCV 1 同时使用
- OpenCV学习笔记7 OpenCV核心模块与核心功能Core Module & Core Functionality(六)
- OpenCV学习笔记6 OpenCV核心模块与核心功能Core Module & Core Functionality(五)
- OpenCV从入门到放弃系列之——core模块.核心功能(一)
- core核心模块--使用OpenCV对两幅图像求和(求混合(blending))
- OpenCV Demo——core模块(1)图像读取与显示
- jQuery 1.8源码分析 core.js核心模块 jQuery对象的构造分析
- OpenCV学习笔记----------OpenCV数据结构Mat详解
- OpenCV学习笔记(四十)——再谈OpenCV数据结构Mat详解
- 详解Android核心模块及相关技术
- CoreBluetooth第一节:Performing Common Central Role Tasks(执行常见的核心端任务)