赞
踩
上一篇文章演示了如何使用二维数组创建黑白图像,如果要创建彩色图像,就需要使用三维数组。例如,在BGR色彩空间创建200 × 200的彩色图像,就需要一个200 ×200 ×3的三维数组存储像素的颜色值,其中第3维可以存储3个通道的颜色值,分别是B通道、G通道和R通道。也就是我们平常说的三原色:蓝(B)、绿(G)和红(R)。
下面的代码,创建一个三维数组,数组元素初始值都是0,然后将该数组复制3份,将第1个数组的通道1(B通道)设置为255,将第2个数组的通道2(G通道)设置为255,将第3个数组的通道3(R通道)设置为255,这将形成3幅纯色的图像。代码如下:
- import cv2
- import numpy as np
-
- width = 200 # 图像的宽
- height = 200 # 图像的高
- # 创建指定宽高、3通道、像素值都为0的图像
- img = np.zeros((height, width, 3), np.uint8)
- blue = img.copy() # 复制图像
- blue[:, :, 0] = 255 # 将通道1中的所有像素都设置为255
- green = img.copy()
- green[:, :, 1] = 255 # 将通道2中的所有像素都设置为255
- red = img.copy()
- red[:, :, 2] = 255 # 将通道2中的所有像素都设置为255
- cv2.imshow("blue", blue) # 显示蓝色图像
- cv2.imshow("green", green) # 显示绿色图像
- cv2.imshow("red", red) # 显示红色图像
- cv2.waitKey()
- cv2.destroyAllWindows()
运行程序,运行结果如图1、图2和图3所示。
下面的例子使用NumPy提供的random.randint函数创建随机数值的三维数组,并将该数组作为图像源显示。由于每一个像素点的颜色都是随机的,所以整体效果看上去就是彩色的雪花点,代码如下:
- import cv2
- import numpy as np
-
- width = 200 # 图像的宽
- height = 200 # 图像的高
- # 创建指定宽高、单通道、随机像素值的图像,随机值在0~256之间(不包括256),数字为无符号8位格式
- img = np.random.randint(256, size=(height, width,3), dtype=np.uint8)
- cv2.imshow("img", img) # 显示彩色雪花点图像
- cv2.waitKey()
- cv2.destroyAllWindows()
运行程序,会看到如图4所示的效果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。