demon2

2020-04-23  本文已影响0人  长歌行夜一

图像处理基础

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: 返回图像的数据类型。

上一篇 下一篇

猜你喜欢

热点阅读