Python Scipy,插值数组到图像

标签 python arrays matplotlib scipy interpolation

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

脚本代码:

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/

相关文章:

python - 如何使用 openpyxl 3.03 找到 excel 的最后一个非空行?

arrays - 在 bash 中循环遍历数组

c - 为什么当我向数组添加第七个字符时,我的代码会终止?

python - OpenCV (Python) 视频子图

python - 如何使用 matplotlib 绘制元组列表?

python - 如何按到给定点的距离对点列表进行排序?

python - 计算百分比差异python

python - 如何修复无法正常工作的 Python 正则表达式匹配?

c++ - 指针错误导致的段错误(简单...)

python - 按中心裁剪图像