【问题标题】:PIL Image not rendering inputted pixel values in correct orderPIL 图像未按正确顺序呈现输入的像素值
【发布时间】:2019-12-01 21:02:41
【问题描述】:

只是为了好玩,我想我会尝试用像素值构建一个图像,然后用PIL.Image 渲染它。

但它没有呈现我输入的值。

from PIL import Image
import numpy as np

# custom array
arr = np.array(
    [[50,200,50],
     [50,200,50],
     [50,200,50]])

print(arr)

img = Image.fromarray(arr, 'L')
img.show()

[[ 50 200 50] [ 50 200 50] [ 50 200 50]]

输出的图片如下。

鉴于高像素值是白色,低像素值是暗色,我预计图像中间会出现一条白线。

这里出了什么问题?

【问题讨论】:

  • 这不是我在执行你的代码时得到的结果——这是我所期望的。
  • 您的数组类型为int64,PIL 不支持。尝试在创建它的位置添加dtype=np.uint8
  • @MarkSetchell 很高兴接受您的回答,如果您想发布它。

标签: python image numpy python-imaging-library render


【解决方案1】:

感谢@Mark Setchall 的评论。

在创建数组时添加type=np.uint8 为我解决了这个问题。

arr = np.array(
    [[50,200,50],
     [50,200,50],
     [50,200,50]], type=np.uint8)

现在我得到了我的预期。

【讨论】:

  • 写得好。我知道答案,但没有时间测试和写出来,所以我只是留下评论让你开始:-)
猜你喜欢
  • 1970-01-01
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-16
  • 2021-03-19
  • 2019-08-18
相关资源
最近更新 更多