scipy.ndimage.imread刚刚在scipy中被弃用,所以我直接将代码切换为使用pyplot-但结果不一样。我正在导入图像以用于内置于keras中的学习算法-我认为这将是一对一的更改-但这不是-我的训练很好,因为我的系统无法进行切换。有没有可以解释差异的python专家?

Scipy返回:


  img_array:ndarray
      不同的色带/通道存储在第三维中,因此,灰度图像为MxN,RGB图像为MxNx3,而
  RGBA图像MxNx4。
  scipy documentation


Matplotlib返回:


  返回值是一个numpy.array。对于灰度图像,返回数组
  是MxN。对于RGB图像,返回值为MxNx3。对于RGBA图像,
  返回值为MxNx4。
  matplotlib documentation


MWE:

from scipy import ndimage
import_image = (ndimage.imread("img.png").astype(float) -
                                          255.0 / 2) / 255.0
print import_image[0]

import matplotlib.pyplot as plt
import_image = (plt.imread("img.png").astype(float) -
                                          255.0 / 2) / 255.0

print import_image[0]

最佳答案

这将是一个真正的mcve:

import matplotlib.pyplot as plt
import numpy as np
import scipy.ndimage

im = np.random.rand(20,20)
plt.imsave("img.png",im)

### Scipy
i2 = scipy.ndimage.imread("img.png")
print i2.shape, i2.min(), i2.max(), i2.dtype
# (20L, 20L, 4L) 1 255 uint8

### Matplotlib
i3 = plt.imread("img.png").astype(float)
print i3.shape, i3.min(), i3.max(), i3.dtype
# (20L, 20L, 4L) 0.00392156885937 1.0 float64


可以看出


scipy.ndimage.imread创建一个int类型的numpy数组,范围从0..255
pyplot.imread创建一个浮点类型的numpy数组,范围从0. .. 1.

关于python - scipy.ndimage.imread和matplotlib.pyplot.imread有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47514063/

10-12 22:12