图像处理基础
1.图像的基本表示法
二值图像:仅仅包含黑色和白色两种颜色的图像(由黑色像素点和白色像素点组成)
灰度图像:与而至图像相比,采用更多的数值来表示不同的颜色。计算机会将灰度处理为256个灰度级,数值在【0,255】,255表示纯白色,0表示纯黑色。于是图像可以用数值在【0,2555】间的矩阵表示。
彩色图像:在视网膜上存在三种不同的颜色感受器(红绿蓝,即三基色)。从光学的角度可以将颜色解析为主波长、纯度、明度等。从心理学和视觉的角度,可以将颜色解析为色调、饱和度、亮度等。通常,我们将上面用不同的方式描述颜色的模式称为色彩空间,或颜色空间、颜色模式等。不同的颜色模式之间是可以相互转换的。RGB是常用的色彩空间之一,每个色彩通道的范围都在【0,255】。一般情况下,RGB色彩空间的通道顺序为R->G->B, 但在OpenCV中,通道顺序为B->G->R.
2.像素处理
1)二值图像以及灰度图像
在OpenCV中,最小的数据类型是无符号的8位数。因此在OpenCV中,并没有二值图像这种数据类型,二值图像是经过处理得到的。然后0表示黑,255表示白。
import cv2
import numpyas np
imgs = np.zeros((8,8),dtype=np.uint8)
print("imgs show",imgs,sep='\n')
cv2.imshow('imgs',imgs)
# 修改部分像素
imgs[3:6,3:6] =255
print(imgs)
cv2.imshow('imgs debug',imgs)
cv2.waitKey(0)
cv2.destroyAllWindows()
你也可以处理灰度图像:
2)彩色图像
RGB模式的彩色图像在OpenCV处理时,会按照B->G->R的颜色通道处理各个像素点,得到一个三维数组(行,列,颜色通道)。
当然你也可以改变某一通道的颜色值。imgs[100:300,100:300,2] = 52。这样将某一区域的蓝色通道值改为52.
我们也可以用numpy生成一副彩色图像。
我们亦可以不用索引使用numpy.array的item方法获取特定点数据,或用itemset()修改某一点数据。
3)通道操作
cv2.split()函数可以实现通道的拆分
cv2.merge()可以实现图像通道的合并。默认通道顺序为b ,g, r。
4)获取图像的属性
shape: 图像的形状。返回包含行数、列数、通道数(彩色图像有)。
size: 返回图像的像素数目,行数*列数*通道数。 灰度图或者二值图的通道数为1。
dtype: 返回图像的数据类型。
网友评论