使用numpy.ndarray手动构建映像,而不是使用cv2.imread()

km0tfn4u  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(129)

我正在尝试理解图像是如何存储为RGB值的
当我使用内置函数type()进行检查时,我刚刚意识到cv2.imread()方法读取的图像只是一堆数字,特别是存储在numpy.ndarray中的每个像素的RGB数字

import cv2
im = cv2.imread('./rgb.png', cv2.IMREAD_UNCHANGED)
print(type(im)) # Output: numpy.ndarray

但我仍然不知道数组中每个索引的表示形式
为了理解它,我想使用numpy.ndarray手动生成3col * 4row图像
我期望图像在哪里:

  • 第一列填充红色(255,0,0)
  • 第二列填充绿色(0,255,0)
  • 第三列用蓝色填充(0,0,255)

用于所有行!
使用存储在变量中的numpy.ndarray声明,例如im,并根据我的预期成功保存

im = np.ndarray('What should I fill in here?')
cv2.imwrite('success.jpg',im)
eanckbw9

eanckbw91#

我创建了一个空的numpy数组,然后用纯色填充每个象限:

import numpy as np
from PIL import Image

im = np.zeros( (480,640,3), dtype=np.uint8 )

im[:240,:320,:] = (255,0,0)
im[:240,320:,:] = (0,255,0)
im[240:,:320,:] = (0,0,255)
im[240:,320:,:] = (255,255,255)
print(im.shape)

p = Image.fromarray(im)
p.save('x.jpg')

输出:

相关问题