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/