首页 文章

Python Scipy,插值数组到图像

提问于
浏览
2

我的基本脚本有问题,加载图像,然后将其转换为数组,通过插值缩放,并应将缩放图像保存到文件,但最后一行不起作用 . 我不知道如何解决它,我知道它与缩放数组有关 . 我会很高兴得到任何帮助 .

脚本代码:

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)

我得到的输出:

回溯(最近一次调用最后一次):文件“imgpolar.py”,第11行,在plt.savefig(x2)文件“/usr/lib/pymodules/python2.7/matplotlib/pyplot.py”,第561行, savefig return fig.savefig(* args,** kwargs)文件“/usr/lib/pymodules/python2.7/matplotlib/figure.py”,第1421行,在savefig中self.canvas.print_figure(* args,** kwargs )文件“/usr/lib/pymodules/python2.7/matplotlib/backend_bases.py”,第2220行,在print_figure ** kwargs)文件“/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py “,第517行,在print_png filename_or_obj,self.figure.dpi中)TypeError:对象似乎不是8位字符串路径或类似Python文件的对象

1 回答

  • 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 是你想要调用缩放图像的地方 .

相关问题