Python 为什么我得到的所有值都是255?

Python 为什么我得到的所有值都是255?,python,matplotlib,Python,Matplotlib,我使用BytIO首先将绘图(matplotlib)转换为PNG格式,然后获得PNG图像的数组,下面是代码: from matplotlib import pyplot as plt import numpy as np import io from PIL import Image fig, ax = plt.subplots() ax.text(0.0,0.0,"Test", fontsize=45) ax.axis('off') ax.imshow(np.random.random((3,

我使用BytIO首先将绘图(matplotlib)转换为PNG格式,然后获得PNG图像的数组,下面是代码:

from matplotlib import pyplot as plt
import numpy as np
import io
from PIL import Image

fig, ax = plt.subplots()
ax.text(0.0,0.0,"Test", fontsize=45)
ax.axis('off')
ax.imshow(np.random.random((3,3)))

with io.BytesIO() as memf:
    fig.savefig(memf, format='PNG')
    memf.seek(0)
    img = Image.open(memf).convert('RGB')
    arr = np.asarray(img)
    img.show()
plt.show()
print(arr)
图像看起来很好,但数组不是,它显示所有3维(RGB)中的所有值均为255。我做错了什么

这是图像(img):


扩展
arr=np.asarray(img)
到:

arr = []
for b in bytearray(np.asarray(img)):
    if b < 255:
        arr += [b]
arr=[]
对于bytearray中的b(np.asarray(img)):
如果b<255:
arr+=[b]

显示此数组中并非所有值都等于255。

arr=np.asarray(img)
扩展为:

arr = []
for b in bytearray(np.asarray(img)):
    if b < 255:
        arr += [b]
arr=[]
对于bytearray中的b(np.asarray(img)):
如果b<255:
arr+=[b]

显示此数组中并非所有值都等于255。

arr
包含255以外的其他值。(计算
np.where(arr!=255)
以查看位置。)看到这么多255的原因是图像包含白色边框。要删除白色边框,请参见或方法。例如,使用Joe Kington的方法(控制
范围
):


arr
包含255以外的其他值。(计算
np.where(arr!=255)
以查看位置。)看到这么多255的原因是图像包含白色边框。要删除白色边框,请参见或方法。例如,使用Joe Kington的方法(控制
范围
):


如果你的图像是白色屏幕,这会解释很多:)是的,但图像不是白色屏幕,我会尝试使用非常小的图像/创建一个。很难看到你这边发生了什么。这是图像(已编辑)。你的图像太大了。从数组的表示中可以得到椭圆,但其中有很多非255值。如果您的图像是白色屏幕,这可以解释很多:)是的,但图像不是白色屏幕,我会尝试使用非常小的图像/创建一个。很难看到你这边发生了什么。这是图像(已编辑)。你的图像太大了。你可以从数组的表示中得到椭圆,但是里面有很多非255的值。@AlisherKassymov:有趣的是,我确实打印了
(arr[arr!=255])
并且我得到了
[253 231 36…,54 184 119]
@AlisherKassymov:有趣的是,我确实打印了
(arr[arr!=255])
,我得到了
[253 231 36…,54 184 119]