常用数据结构与颜色空间
矩阵和图像类型
图像可能是灰度,彩色,4 通道的(RGB+alpha),其中每个通道可以包含任意的整数或浮点数。因此,该类型比常见的、易于理解的3通道 8位 RGB 图像更通用。
RBG颜色空间、 HSV/HLS颜色空间、 Lab颜色空间
Scalar 0表示具有四个元素的数组,大量用来传递像素值,如RGB颜色一般形式: Scalar(double B,double Gdouble R,double Alpha)如果用不到第四个则表示Scalar(B,G,R),其中:B一表示蓝色分量,G一表示绿色分量R一表示红色分量,Alpha一表示透明度注意:Scalar表示颜色顺序为BGR
Scalar (255,0,0)表示纯蓝色Scalar (0,255,0)表示纯绿色
Scalar (0,0,255)----表示纯红色Scalar (255,255,0)----表示青色
色调(E):200 红®:255
饱和度(s):240 绿(G):0
Scalar (0,255,255)
颜色|纯色(0)
----表示黄色
OpenCV 提供了大量实用的图像操作符,包括缩放图像,单通道提取,找出特定通道最大最小值,两个图像求和,对图像进行阙值操作,等等。本章我们将仔细介绍这类操作。
图像类型
宏 图像像素类型
IPL DEPTH 8U -------------------------------- 无符号 8 位整数 (8u)
IPL DEPTH 8S -------------------------------- 有符号 8位整数(8s)
IPL_DEPTH_16S------------------------------有符号16 位整数(16s)
IPL DEPTH_32S-------------------------------有符号 32位整数(32s)
IPL DEPTH 32F--------------------------------32 位浮点数单精度(32f)
IPL_DEPTH_64F-------------------------------64 位浮点数双精度(64f)
图像访问
通常,我们需要非常迅速和高效地访问图像中的数据。这意味着我们不应受制于存取函数。实际上,我们想要用最直接的方式访问图像内的数据。
虽然 OpenCV 中有很多优化函数帮助我们完成大多数的图像处理的任务,但是还有一些任务,库中没有预先包装好的函数可以帮我们解决。例如,如果我们有一个三通道 HSV 图像,在色度保持不变的情况下,我们要设置每个点的饱和度和高度为 255(8 位图像的最大值),我们可以遍历图像,对每个像素点进行修改。
示例代码:
for i in range(0,img.shape[0]):
#访问所有行
for j in range(0,img.shape[1]):
#访问所有列
if(int(img[i,j] * contrast * 0.01 + brightness)>255):
img[i,j] = 255
else:
img[i,jl =int(img[i,jl * contrast * 0.01 + brightness
Rect类
ROI 在实际工作中有很重要的作用,在很多情况下,使用它们会提高计算机视觉代码的执行速度。这是因为它们允许对图像的某一小部分进行操作,而不是对整个图像进行运算。
Rect类用来表示矩形,成员有x, y, width, height
Python中直接用元组(x,y,w,h)
Size类
Size表示区域大小,常用构造函数Size(intwidth, int height)Python中直接用元组(width,height)
本文有引用《学习OPencv中文版》书籍介绍