gpt4 book ai didi

Python PIL/numpy 转换

转载 作者:行者123 更新时间:2023-12-01 03:08:28 26 4
gpt4 key购买 nike

我在 python PIL 图像和 numpy 数组之间转换时遇到问题。我已经检查了现有的 Stackoverflow 帖子,但它没有解决问题:

import matplotlib.pyplot as plt
import numpy as np
import PIL

rgb_img = plt.imread('some-image.png')
PIL_rgb_img = PIL.Image.fromarray(np.uint8(rgb_img))

plt.imshow(PIL_rgb_img)

我遇到黑屏。我尝试过转换为 uint8 或不转换为 uint8,并且还尝试仅将 RGB channel 保留在整个 RGBA 数据之外。没有任何效果。

最佳答案

我可能不会给你一个完整的解释,(为此,你可以阅读 matplotlib 的函数文档),但显然通过一些测试,发生了以下情况:

当您调用时:

rgb_img = plt.imread('img.png')

它给出了一个 numpy float 组,它将读取 [0 - 1] 之间的颜色为白色和黑色(对于 RGB 也是如此)

当你打电话时:

PIL_rgb_img = PIL.Image.fromarray(np.uint8(rgb_img))

将其转换为uint8值,它只是将应该是255的值变成1,这是完全错误的,

你知道在 uint8 中,值应该在 [0 - 255] 之间

当你输入:

plt.imshow(PIL_rgb_img)

它只显示 255 倍“褪色”图像,非常接近黑色..

P。 S:

这只发生在“.png”文件中,带有 plt.imread ..

的内容

解决问题只需输入:

img = 'some_img.png'
rgb_img = plt.imread(img)
if img.split('.')[-1]=='png':
PIL_rgb_img = PIL.Image.fromarray(np.uint8(rgb_img*255))
else:
PIL_rgb_img = PIL.Image.fromarray(np.uint8(rgb_img))

plt.imshow(PIL_rgb_img)

应该可以解决这个问题。

关于Python PIL/numpy 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43101849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com