python numpy / scipy缩放中心

问题描述 投票:0回答:1

我有一个二维的numpy数组,像这样:

import numpy as np
x = np.random.rand(100, 100)

现在,我想对该图像进行缩放(尺寸保持相同,即(100,100),并且我想更改缩放的中心。

所以,说我想缩放以将点(70, 70)保持在中心,通常情况下,如何将图像“平移”到该点然后进行缩放。

我想知道如何使用scipy实现这一目标。我想知道是否有办法从这个numpy数组中指定说4个坐标,并基本上用这个感兴趣区域的插值图像填充画布?

numpy scipy
1个回答
0
投票

您可以使用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)
© www.soinside.com 2019 - 2024. All rights reserved.