【发布时间】:2011-05-22 05:50:12
【问题描述】:
我现在一直在使用 numpy 和 scipy 在 python 中进行图像处理。我有一段代码可以放大图像,但不确定它是如何工作的。
所以请一些 python 中的 scipy/numpy 专家可以逐行向我解释。我总是渴望学习。
import numpy as N
import os.path
import scipy.signal
import scipy.interpolate
import matplotlib.pyplot as plt
import matplotlib.cm as cm
def enlarge(img, rowscale, colscale, method='linear'):
x, y = N.meshgrid(N.arange(img.shape[1]), N.arange(img.shape[0]))
pts = N.column_stack((x.ravel(), y.ravel()))
xx, yy = N.mgrid[0.:float(img.shape[1]):1/float(colscale),
0.:float(img.shape[0]):1/float(rowscale)]
large = scipy.interpolate.griddata(pts, img.flatten(), (xx, yy), method).T
large[-1,:] = large[-2,:]
large[:,-1] = large[:,-2]
return large
非常感谢。
【问题讨论】:
-
Python 中每条语句的缩进很重要。请修正您的代码 sn-p 的格式。
-
对此表示感谢和抱歉。我添加了那些 import .. 以使其清楚
-
请注意,这里使用
griddata并不是最有效的选择,因为网格始终是矩形的。更有效的选择是:scipy.interpolate.RectBivariateSpline和scipy.ndimage.zoom。
标签: python image-processing numpy scipy