文章目录
- 一、概要
- 二、库介绍
- 2.1 numpy
- 2.2 cv2即opencv库
- 2.3 matplotlib.pyplot
- 三、代码示例
- 3.1 绘制红色斜十字图
- 3.2 红色图样例
- 3.3 分离色彩代码示例
- 四、成果展示
一、概要
制作一个红色斜十字的图片并分离色彩空间
二、库介绍
2.1 numpy
2.2 cv2即opencv库
2.3 matplotlib.pyplot
三、代码示例
3.1 绘制红色斜十字图
import numpy as np #数组库
import cv2 #opencv的库
import matplotlib.pyplot as plt #绘图库
image = np.zeros((700, 700, 3), dtype = np.uint8) #绘制一个700 * 700大小的全为0的图
block_size = 100 #步进数
for i in range(0, 700, block_size): #从0开始每隔100循环一次
for j in range(0, 700, block_size):
image[i : i + 3, :, :] = (255, 255, 255) #画出白色线
image[:, j : j + 3, :] = (255, 255, 255)
if(i != 0 and j != 0 and i!= 600 and (i == j or i + j == 600)): #判定什么格子变成红色
#i 0 100 200 300 400 500 600 700
#j 0 100 200 300 400 500 600 700
image[i: i + block_size, j: j + block_size, :] = (255, 0, 0) #将格子涂成红色
plt.imshow(image) #输出图片
plt.title('tu pian') #图片标题
plt.axis('off') #关闭坐标轴
plt.show() #固定显示
3.2 红色图样例
3.3 分离色彩代码示例
#分解三色图
r = image[:, :, 0] #分离通道0
g = image[:, :, 1] #分离通道1
b = image[:, :, 2] #分离通道2
#三通道值为0, 1, 2,从0开始
#创建三个700*700的图像
r_image = np.zeros((700, 700, 3), dtype = np.uint8)
g_image = np.zeros((700, 700, 3), dtype = np.uint8)
b_image = np.zeros((700, 700, 3), dtype = np.uint8)
r_image[:, :, 0] = r #令创建好的三通道图像附上单通道的颜色以实现显示
g_image[:, :, 1] = g
b_image[:, :, 2] = b
plt.subplot(1,3,1) #输出在一个一行三列的图片的第一个
plt.imshow(r_image)
plt.title('r')
plt.axis('off')
plt.subplot(1,3,2)#输出在一个一行三列的图片的第二个
plt.imshow(g_image)
plt.title('g')
plt.axis('off')
plt.subplot(1,3,3) #这样就可以让三个图片在同一行了
plt.imshow(b_image)
plt.title('b')
plt.axis('off')
plt.show()