目录
一、RGB
二、图像处理入门
三、色彩空间的转换
一、RGB
在表示图像时,有多种不同的颜色模型,但最常见的是红、绿、蓝(RGB) 模型RGB 模型是一种加法颜色模型,其中原色 (在RGB模型中,原色是红色 R、绿色 G 和蓝色 B)混合在一起就可以用来表示广泛的颜色范围。
每个原色(R,G,B)通常表示一个通道,其取值范围为0,255]内的整数值。因此,每个通道有共256个可能的离散值,其对应于用于表示颜色通道值的总比特数(28=256)。此外,由于有三个不同的通道,使用 RGB 模型表示的图像称为24位色深图像:
最常见的色彩空间就是RGB,人眼也是基于RGB的色彩空间去分辨颜色的.
OpenCv默认使用的是BGR.BGR与RGB色彩空间的区别在于图片在色彩通道上的排列顺序不同。
二、图像处理入门
首先我们第一个刻在脑子里的概念就是:
图片是由像素点构成!!!
以上图像可以完美的展示出图片的构成.
而在图像中一般分为三类:
1.二值图像:
二值图像表示的意思就是每一个像素点只由0和1构成,0表示黑色,1表示白色,而且这里的黑色和白色是纯黑和纯白。我们以官网为例。
2.灰度图像
灰度图像就是一个8位的位图。什么意思呢?就是说00000001一直到11111111,这就是二进制表示。如果表示成我们常用的十进制就是0-255。其中0就表示纯黑色,255就表示纯白色,中间就是处于纯黑色到纯白色的相关颜色。我们依旧以丽娜为例。
3.彩色图像
计算机中所有的颜色都可以由R(红色通道)、G(绿色通道)、B(蓝色通道)来组成,其中每一个通道都有0-255个像素颜色组成。比如说R=234,G=252,B=4就表示黄色。显示出来的也是黄色。所以说彩色图像由三个面构成,分别对应R,G,B。我们还是以丽娜为例子。
三、色彩空间的转换
代码如下:
import cv2
def callback(value):
pass
# 创建窗口
cv2.namedWindow('color',cv2.WINDOW_NORMAL)
cv2.resizeWindow('color',640,480)
# 读取图片,OpenCv默认读进来的图片为BGR的色彩空间
img = cv2.imread('6.jpg')
# 常见的颜色空间转换
colorspaces = [cv2.COLOR_BGR2RGBA,cv2.COLOR_BGR2BGRA,
cv2.COLOR_BGR2GRAY,cv2.COLOR_BGR2HSV,
cv2.COLOR_BGR2YUV]
# 创建trackbar
cv2.createTrackbar('trackbar','color',0,4,callback)
while True:
index = cv2.getTrackbarPos('trackbar','color')
# 颜色空间的转换API
cvt_img = cv2.cvtColor(img,colorspaces[index])
cv2.imshow('color',cvt_img)
key = cv2.waitKey(10)
if key == ord('q'):
break
# 释放资源
cv2.destroyAllWindows()
运行结果如下: