2015-11-06 55 views
2

我有我的基本脚本加载图像,然后将其转换为数组,通过插值缩放,应保存缩放图像文件,但最后一行不起作用的问题。我不知道如何解决这个问题,我知道这是与放大数组有关的问题。我会很乐意提供任何帮助。Python Scipy,插图阵列图像

脚本代码:

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

回答

2

首先,你可能只需要沿着图像数组的第一个两轴(而不是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是要打电话给你的缩放图像什么的。

+0

谢谢! :)你知道也许如何使用其他插值方式,我的意思是像汉宁,汉明等其他方法? – Rarez

+0

据我所知,'ndimage.interpolation.zoom'只是进行样条插值。你可能会问一个新的SO问题来得出更好的答案...... – xnx