我的基本脚本有问题,该脚本加载图像,然后将其转换为数组,通过插值进行缩放,并且应该将缩放的图像保存到文件中,但最后一行不起作用。我不知道如何解决它,我知道问题出在缩放数组上。我将非常高兴获得任何帮助。
脚本代码:
import numpy as np
import scipy.ndimage as ndimage
from scipy import misc
import matplotlib.pyplot as plt
x= misc.imread('img400x400.jpg')
x2= ndimage.zoom(x, 2, order=0)
#print x
#print x2
#plt.imshow(x)
plt.savefig(x2)
我得到的输出:
Traceback (most recent call last): File "imgpolar.py", line 11, in plt.savefig(x2) File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 561, in savefig return fig.savefig(*args, **kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 1421, in savefig self.canvas.print_figure(*args, **kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/backend_bases.py", line 2220, in print_figure **kwargs) File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line 517, in print_png filename_or_obj, self.figure.dpi) TypeError: Object does not appear to be a 8-bit string path or a Python file-like object
最佳答案
首先,您可能只想沿着图像数组的前两个轴(而不是 RGB 轴)进行缩放,否则您最终会得到一个形状错误的数组,(nx, ny, 6)
)。您可以指定要缩放哪些轴作为元组:
x2 = ndimage.interpolation.zoom(x, (2,2,1), order=0)
其次,您需要使用 ndimage.imsave
保存图像:plt.savefig
需要一个文件名来保存当前绘图(但没有) ,不是数组。因此,尝试使用:
misc.imsave(x2, 'interp.jpg')
其中 interp.jpg
是您想要命名的缩放图像。
关于Python Scipy,插值数组到图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33565539/