目录

1、点的表示:Point类

2、颜色的表示:Scalar类

3、尺寸的表示:Size类

4、矩形的表示:Rect类

5、颜色空间转换:cvtColor()函数


1、点的表示:Point类

Point类数据结构表示了二维坐标系下的点,即由图像坐标x和y指定的2D点。用法如下:

Point point;
point.x = 10;
point.y = 8;

或者:

Point point = Point(10, 8)

在OpenCV中有如下定义:

  • typedef Point_<int> Point2i;
  • typedef Point2i Point;
  • typedef Point_<float> Point2f;

所以,Point_<int>、Point2i、Point互相等价,Point_<float>、Point2f互相等价


2、颜色的表示:Scalar类

Scalar()表示具有4个元素的数组,在OpenCV中用于传递像素值

如下边颜色表达式,表示定义的RGB颜色值:红色分量为c,绿色分量为b,蓝色分量为a(OpenCV中颜色通道为BGR):

Scalar(a, b, c)

Scalar类其实就是Scalar_<double>。


3、尺寸的表示:Size类

OpenCV中有如下定义:

  • typedef Size_<int> Size2i;
  • typedef Size2i Size;

所以,Size_<int>、Size2i、Size这三个类型是等价的。

OpenCV中常用的Size构造函数为:

  • Size_<int>(_TP _width,  _Tp _height)

可以使用XXX.widthXXX.height来分别表示宽度和高度。

下边是Size的一个例子:

Size(5,5) //构造出的Size宽度和高度都为5,即XXX.width和XXX.height都为5

4、矩形的表示:Rect类

Rect类的成员变量有x,y,width,height,分别为左上角点的坐标和矩形的宽和高

常用的成员函数有:

  • Size():返回值为Size
  • area():返回矩形的面积
  • contains(Points):判断点是否在矩形内
  • inside(Rect):判断矩形是否在该矩形内
  • tl:返回左上角点坐标
  • br:返回右下角点坐标

求两个矩形的交集和并集:

Rect rect = rect1 & rect2;
Rect rect = rect1 | rect2;

 矩形进行平移操作和缩放操作:

Rect rectShift = rect + point;
Rect rectScale = rect + size;

5、颜色空间转换:cvtColor()函数

cvtColor()函数是颜色空间转换函数,能够实现RGB颜色向HSV、HSI等颜色空间的转换,也可以转换为灰度图像。

格式如下:

void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0)

参数说明:

第一个参数:输入图像

第二个参数:输出图像

第三个参数:颜色空间转换标识符

第四个参数:目标图像的通道数,若该参数为0,表示目标图像取源图像的通道数。

下边是一个调用示例:

cvtColor(stcImage, dstImage, COLOR_GRAY2BGR)

cvtColor()函数标识符如下表所示:

下边代码shi关于cvtColor()函数的测试:

# include <opencv2/opencv.hpp>
# include <iostream>using namespace cv;
using namespace std;void main(){Mat srcImage = imread("1.jpg", 1);  //载入图像Mat dstImage_gray, dstImage_Lab, dstImage_HLS;imshow("原始图", srcImage);  //显示原始图cvtColor(srcImage, dstImage_gray, COLOR_BGR2GRAY);  //转换颜色空间imshow("Gray效果图", dstImage_gray);    //显示效果图cvtColor(srcImage, dstImage_Lab, COLOR_BGR2Lab);imshow("Lab效果图", dstImage_Lab);cvtColor(srcImage, dstImage_HLS, COLOR_BGR2HSV);imshow("HLS效果图", dstImage_HLS);waitKey();  //保持窗口显示
}

运行就结果:

原始图

 Gray效果图

 Lab效果图

HLS效果图

【OpenCV】OpenCV实战从入门到精通之 -- 常用数据结构和函数(Point、Scalar、Size、Rect、cvtColor)相关推荐

  1. 【Python】Python实战从入门到精通之二 -- 教你使用Python中列表操作

    本文是Python实战–从入门到精通系列的第二篇文章: [Python]Python实战从入门到精通之一 – 教你深入理解Python中的变量和数据类型 Python实战从入门到精通之二 – 教你使用 ...

  2. 【OpenCV】OpenCV实战从入门到精通之 -- 输入输出XML和YAML文件详解

    1.XML和YAML文件简介 XML文件是一种元标记语言,即开发者可以根据自身需要定义自己的标记.它是一种语义和结构语言,描述了文档的语义和结构. YAML以数据为中心,是一个可读性高,用来表达资料序 ...

  3. 【OpenCV】OpenCV实战从入门到精通之 -- 访问图像中的像素

    目录 1.图像在内存之中的存储方式 2.颜色空间缩减 3.LUT函数:Look up table操作 4.计时函数 5.访问图像中像素的三类方法 5.1.指针访问像素 5.2.迭代器操作像素 5.3. ...

  4. 【OpenCV】OpenCV实战从入门到精通之 -- 指针访问、迭代器iterator、动态地址计算配合at元素

    目录 1.指针访问像素 2.迭代器操作像素 3.动态地址计算 OpenCV中,有三种方式访问图像像素: 指针访问:C操作符[]: 迭代器iterator 动态地址计算 上述方法在访问速度上略有差异.d ...

  5. 【OpenCV】OpenCV实战从入门到精通之 -- 基本图像绘制

    目录 1.DrawEllipse()函数的写法 2.DrawFilledCircle()函数的写法 3.DrawPolygon()函数的写法 4.DrawLine()函数的写法 基本绘制图形代码: m ...

  6. 【OpenCV】OpenCV实战从入门到精通之 -- 显示创建Mat对象的七种方法

    目录 1.使用Mat()构造函数 2.C\C++中构造函数进行初始化 3.为已经存在的IplImage指针创建信息头 4.利用Create()函数 5.Matlab方式的初始化 6.对小矩阵使用逗号分 ...

  7. 【OpenCV】OpenCV实战从入门到精通之 -- 图像对比度、亮度值调整

    理论依据 首先了解一下算子的概念.一般的图像处理算子都是一个函数,它接受一个或多个输入图像,并产生输出图像.下面是算子的一般形式: 或者 图像亮度和对比度的次奥做属于图像变换中比较简单的点操作(poi ...

  8. 【OpenCV】OpenCV实战从入门到精通之 -- 离散傅里叶变换相关函数详解

    目录 1.dft()函数 2.返回DFT最优尺寸大小:getOptimalDFTSize()函数 3.扩充图像边界:copyMakeBorder()函数 4.计算二维矢量的幅值:magnitude() ...

  9. opencv+python实战日记 入门篇(八)色块识别

    色块识别 import cv2 import numpy as npframeWidth = 640 frameHeight = 480 cap = cv2.VideoCapture(0)#获取摄像头 ...

最新文章

  1. 机器学习模型部署都有哪些坑?
  2. Cloud Control 13c 13.3安装(二) agent 部署
  3. linux c 指针 内存 泄漏几种情况
  4. 【LeetCode】128. 最长连续序列
  5. 张新、黎民、王亮三位老师分别来自湖南、广西、甘肃,分别教语文、数学和英语。已知:(1)张新不是湖南人,黎明不是广西人;(2)湖南的老师不教英语;(3)广西的老师教语文;(4)黎民不教数学。由此可知,王
  6. 一个 js 中值传递和引用传递的坑。
  7. 相对路径和绝对路径概念
  8. docker搭建replication集群
  9. mongodb的java驱动包_mongodb的java驱动包
  10. 单片机,微控制器和微处理器的主要区别?
  11. POJ 2923 Relocation(状压DP)题解
  12. 非常的好的协同过滤入门文章(ZZ)
  13. IDEA多module的项目共享配置文件的处理
  14. php导航自助收录源码,最近网上流行的导航网秒收录网站php源码
  15. 手把手教你使用Admob广告中介
  16. 黄宁然——走过你来时的路
  17. word转html linux java,Java-linux下如何代码实现word转换成html
  18. 锅炉软化水不合格是怎么回事?该如何解决?
  19. JAVA中的CAS算法
  20. alpine linux系统操作

热门文章

  1. C# 数组增加元素_C#的集合类型及使用技巧
  2. sinr是什么意思_明明是满格信号,可是却不如两三格,这是什么情况?
  3. java异常分类三大类_JAVA 中异常的分类
  4. 2017二级c语言选择题,2017年9月计算机二级C语言考试选择题
  5. 计算机密码学奖,上海交通大学计算机科学与工程系(CSE)
  6. html隐藏并失效,如果元素开始隐藏,css过渡将不起作用
  7. python print(f)执行将报错_Linux中为什么执行自己的程序要在前面加./
  8. linux内网服务器映射到公网地址吗,LINUX 内网设备将服务映射到公网地址
  9. modelsim10.1a安装破解说明
  10. pythonsplit函数_Python split()函数如何工作