我有一个二维的numpy数组,像这样:
import numpy as np
x = np.random.rand(100, 100)
现在,我想对该图像进行缩放(尺寸保持相同,即(100,100),并且我想更改缩放的中心。
所以,说我想缩放以将点(70, 70)
保持在中心,通常情况下,如何将图像“平移”到该点然后进行缩放。
我想知道如何使用scipy
实现这一目标。我想知道是否有办法从这个numpy数组中指定说4个坐标,并基本上用这个感兴趣区域的插值图像填充画布?
您可以使用ndimage.zoom进行缩放。我经常使用ndimage,它运作良好且速度很快。 https://docs.scipy.org/doc/scipy/reference/generated/scipy.ndimage.zoom.html
您提到的4坐标部分是我想放大区域的两个角。仅使用图像的numpy切片即可轻松实现(假设您的图像是np数组):
your_image[r1:r2, c1:c2]
假设您希望输出图像的尺寸为100x100,那么r1-r2和c1-c2的差异将是相同的,因此您的区域是正方形的。
nd.zoom采用缩放系数(浮动)。您将需要计算该缩放因子,以便拍摄切片的图像并将其转换为100x100大小的数组:
ndimage.zoom(your_image[r1:r2, c1:c2], zoom=your_zoom_factor)