图像的基本表示方法
二值图像
二值图像是指只含有黑色和白色的图像,白色的像素点处理为“1”,黑色的像素点处理为“0”
灰度图像
计算机会将灰度处理为256个灰度级,用数值区间[0,255]来表示
彩色图像
在RGB色彩空间中,图像通道的顺序是R→G→B ,但是在OpenCV中,通道的顺序是B→G→R
- B 第一个通道保存B通道的信息
- G 第二个通道保存G通道的信息
- R 第三个通道保存R通道的信息
图像的基本操作
图像的读取
retval = cv2.imread(filename[, flags])
● retval 是返回值,其值是读取到的图像
● filename 是要读取图像的完整文件名
● flags是读取标记,用来控制读取文件的类型
image-20240306110207067.png
图像的显示
None = cv2.imshow(window, image)
● window是窗口的名字
● image是要显示的图像
waitKey()函数用来等待按键
retval= cv2.waitKey([delay])
● retval是返回值
● delay表示等待键盘触发的时间,单位是ms。当该值为负数或0时表示无限等待,默认值为0
destroyAllWindows函数用来释放所有窗口
None = cv2.destroyAllWindows()
图像的保存
retval= cv2.imwrite(filename, img[, params])
● retval是返回值
● filename是要保存的图像的完整路径名,包括文件的扩展名
● img是要保存的图像的名字
● params是保存的类型参数,可选
图像通道的基本操作
拆分图像的通道
b, g, r = cv2.split(img)
● b、g、r分别是B通道、G通道、R通道的图像信息
● img是要拆分的图像
获取图像属性
● shape:表示图像的大小。如果是彩色图像,则返回包含行数、列数和通道数的数组;如果是二值图像或灰度图像,则返回包含行数和列数的数组
● size:表示返回的图像的像素数目
● dtype:表示返回的图像的数据类型
Numpy.array 初识
Numpy是Python的一种开源的数值计算扩展,用来处理多维数组
图像运算
加法运算
在面向Python的OpenCV中有两种方法可以实现图像的加法运算。一种是通过运算符“+”对图像进行加法运算,另一种是通过cv2.add()函数来实现对图像的加法运算
运算符“+”
a和b表示两幅图像的像素值,mod(a+b,256) 表示“a+b的和除以256取余
cv2.add()函数
result = cv2.add(a, b)
● result表示计算的结果
● a和b表示需要进行加法计算的两个像素值
image-20240306140507849.png
减法运算
一种是通过运算符“-”对图像进行加法运算,另一种是通过cv2.subtract()函数来实现对图像的减法运算
运算符“-”
image-20240306140729152.png
cv2.subtract()函数
result = cv2.subtract(a,b)
● result表示计算的结果
● a和b表示需要进行减法计算的两个像素值
image-20240306140920047.png
乘法运算
图像乘法运算有矩阵乘法和矩阵的点乘两种。面向Python的OpenCV提供了cv2. mutiply()函数进行矩阵的点乘运算,Python为矩阵的乘法运算提供了dot()函数
矩阵乘法
result = np.dot(a,b)
● result表示计算的结果
● a和b表示需要进行矩阵乘法计算的两个像素值矩阵
矩阵点乘运算
result = cv2.multiply(a,b)
● result表示计算的结果
● a和b表示需要进行矩阵点乘的两个像素值矩阵
除法运算
除法运算应用在图像中即为矩阵的点除运算,面向Python的OpenCV提供了cv2. divide()函数来进行像素矩阵的点除运算
result = cv2.divide(a, b)
● result表示计算的结果
● a和b表示需要进行矩阵点除的两个像素值矩阵
逻辑运算
按位与
dst = cv2.bitwise_and(src1, src2[, mask])
● dst表示与输入值具有相同大小的输出值
● src1表示第一个输入值
● src2表示第二个输入值
● mask表示可选操作掩码
按位或
dst = cv2.bitwise_or(src1, src2[, mask])
● dst表示与输入值具有相同大小的输出值
● src1表示第一个输入值
● src2表示第二个输入值
● mask表示可选操作掩码
按位非
dst = cv2.bitwise_not(src[, mask])
● dst表示与输入值具有相同大小的输出值
● src表示输入值
● mask表示可选操作掩码
按位异或
dst = cv2.bitwise_xor(src1, src2[, mask])
● dst表示与输入值具有相同大小的输出值
● src1表示第一个输入值
● src2表示第二个输入值
● mask表示可选操作掩码
图像的色彩空间转换
色彩空间类型转换函数
dst = cv2.cvtColor(src, code[, dstCn])
● dst表示与输入值具有相同类型和深度的输出图像
● src表示原始输入图像
● code是色彩空间转换码,常见的枚举值如表
image-20240306160732418.png
RGB色彩空间
RGB色彩空间使用三个数值向量表示色光三基色(Red、Green、Blue)的亮度。每个通道的数量值被量化为8~256个数,因此,RGB图像的红、绿、蓝三个通道的图像都是一幅8位图
GRAY色彩空间
GRAY色彩空间一般是指8位灰度图,像素值的范围是0~255,共256个灰度级。由RGB色彩空间转换为GRAY色彩空间的标准公式为
YCrCb色彩空间
在传统的RGB色彩空间中并没有亮度的信息,YCrCb色彩空间弥补了这个遗憾。在YCrCb色彩空间中,Y代表亮度,Cr和Cb保存色度信息,其中Cr表示红色分量信息,Cb表示蓝色分量信息
R、G、B分别表示RGB色彩空间的三通道信息,delta的值为
image-20240306161302169.png
HSV色彩空间
HSV是从心理学角度提出的,它包括色调、饱和度和亮度三要素。其中,色调是指光的颜色,与混合光谱的主要光波长有关;饱和度是指颜色深浅程度或相对纯净度;亮度反映的是人眼感受到的光的明暗程度