生成的三个数组可以用cv2.merge函数合并,下面写的是我用numpy实现的cv2.merge函数,效率一言难尽,不如opencv原生的函数好用。
pil注意三原色顺寻是rgb,而opencv正好相反,是bgr,切记切记。
from typing import List, Any, Tuple
import matplotlib.pyplot as plt
import cv2
from PIL import Image
import numpy as np
#图片的分辨率为300*200,这里b, g, r设为随机值,注意dtype属性
b = np.random.randint(0, 255, (200, 300), dtype=np.uint8)
g = np.random.randint(0, 255, (200, 300), dtype=np.uint8)
r = np.random.randint(0, 255, (200, 300), dtype=np.uint8)
print(b)
# 合并通道,形成图片
#img = cv2.merge([b, g, r])
img=np.empty([20,30,3],dtype=np.uint8)
bgr=()
rowlist=[]
collist: List[List[Tuple[Any, Any, Any]]]=[]
for row in range(200):
rowlist=[]
for col in range(300):
bgr=(r[row][col],g[row][col],b[row][col])
rowlist.append(bgr)
collist.append(rowlist)
img=np.asarray(collist)
print(img)
# 显示图片
plt.imshow(img)
plt.waitforbuttonpress(0)