如何在 numpy (RGBA) 中正确创建空白彩色图像

How to properly create an blank colored image in numpy (RGBA)

我正在尝试在 Numpy 中创建一个 包含 alpha 通道 (RGBA) 的空白彩色图像

为了了解如何做到这一点,我来到了 。但是,当我 运行 SO 答案的任一示例时, red 出现 blue,与答案中显示的图像不同。

所以,我想知道正确的做法是 as uint16(而不是 uint8)和 without颜色混淆?这是 Numpy 的错误还是我做错了什么?

我生成的图像: https://i.ibb.co/VVxhDwY/img.png

我的代码:

import cv2
import numpy as np

size = (128, 256)

blank_image = np.zeros((size[0], size[1], 4), np.uint8)

# Make first 10 rows red and opaque
blank_image[:10] = [255,0,0,255]

# Make first 10 columns green and opaque
blank_image[:,:10] = [0,255,0,255]

cv2.imwrite('test.png', blank_image)

如果您使用 matplotlib.pyplot 而不是 cv2,您的代码运行得非常好(见下文),然后您可以简单地将它存储在这个库中。

您 link 的答案是使用 PIL/Pillow(使用传统的 RGB 排序)而不是 OpenCV(使用 BGR 排序)。如果你想用 OpenCV 的 16 位半透明纯红色,使用:

#!/usr/bin/env python3

import cv2
import numpy as np

size = (128, 256)

# Make semi-transparent solid red image
im = np.zeros((*size, 4), np.uint16) + [0,0,65535,128]

# Save to disk
cv2.imwrite('result.png', im)