我有一个 numpy 数组,它具有以下形状:(1, 128, 160, 1)。现在,我有一个具有以下形状的图像:(200, 200)。因此,我执行以下操作:orig = np.random.rand(1, 128, 160, 1)orig = np.squeeze(orig)现在,我想要做的是获取我的原始数组并将其插入到与输入图像相同的大小,即(200, 200)使用线性插值。我想我必须指定应该评估 numpy 数组的网格,但我无法弄清楚如何去做。
1 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
你可以这样做scipy.interpolate.interp2d:
from scipy import interpolate
# Make a fake image - you can use yours.
image = np.ones((200,200))
# Make your orig array (skipping the extra dimensions).
orig = np.random.rand(128, 160)
# Make its coordinates; x is horizontal.
x = np.linspace(0, image.shape[1], orig.shape[1])
y = np.linspace(0, image.shape[0], orig.shape[0])
# Make the interpolator function.
f = interpolate.interp2d(x, y, orig, kind='linear')
# Construct the new coordinate arrays.
x_new = np.arange(0, image.shape[1])
y_new = np.arange(0, image.shape[0])
# Do the interpolation.
new_orig = f(x_new, y_new)
注意形成x和时对坐标范围的 -1 调整y。这确保图像坐标从 0 到 199(含)。
添加回答
举报
0/150
提交
取消