Python基于numpy矩阵绘制位图 输出全黑无指定红色像素问题排查
问题根因
- 你创建的numpy数组
foo默认使用float64浮点类型,而PIL的RGB模式要求输入为uint8类型的整数数组,每个通道取值范围为0~255。 - 你打印数组时numpy按
float64类型解析,能正确显示255的赋值,但PIL解析数组内存时会按RGB模式要求的1字节无符号整数读取,二者对同一段内存的解析规则不一致,导致赋值的红色像素没有被正确识别,最终输出全黑图片。
修复方案
创建数组时直接指定dtype=np.uint8即可,修复后代码如下:
from PIL import Image import numpy as np foo = np.zeros([10,10,3], dtype=np.uint8) foo[8,8] = [255,0,0] # Draw a red pixel img = Image.fromarray(foo, 'RGB') img.save('out.png')
内容的提问来源于stack exchange,提问作者Listing
相关产品推荐
相关产品推荐

