【问题标题】:Python Scipy, interpolation array to imagePython Scipy,插值数组到图像
【发布时间】:2016-02-07 12:37:37
【问题描述】:

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

脚本代码:

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(最近一次调用最后一次):文件“imgpolar.py”,第 11 行,在 plt.savefig(x2) 文件“/usr/lib/pymodules/python2.7/matplotlib/pyplot.py”,第 561 行,在 保存无花果 返回 fig.savefig(*args, **kwargs) 文件“/usr/lib/pymodules/python2.7/matplotlib/figure.py”,第 1421 行,在 保存无花果 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: Object does not seem to be a 8-bit string path or a Python file-like object

【问题讨论】:

    标签: python arrays matplotlib scipy interpolation


    【解决方案1】:

    首先,您可能只想沿图像数组的前两个轴(而不是 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 是您想要调用的缩放图像。

    【讨论】:

    • 谢谢! :) 你知道如何使用其他插值方法吗?我的意思是其他方法,如汉宁、汉明等?
    • 据我所知,ndimage.interpolation.zoom 只是进行样条插值。您可能会问一个新的 SO 问题,以得到更好的答案...
    猜你喜欢
    • 1970-01-01
    • 2012-11-16
    • 2011-07-04
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    • 2011-07-05
    • 2019-06-01
    • 2017-12-13
    相关资源
    最近更新 更多