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

问题描述

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

为了找出如何做到这一点,我来到了this SO answer。但是,当我运行 SO 答案的任一示例时,红色 显示为蓝色,这与答案中显示的图像不同。

所以,我想知道这样做的正确方法是作为uint16(而不是uint8)并且没有颜色混合强>?这是 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,255]

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

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

解决方法

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

Example of your code

,

您链接到的答案是使用 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,65535,128]

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

enter image description here

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...