旋转#
- scipy.ndimage.rotate(input, angle, axes=(1, 0), reshape=True, output=None, order=3, mode='constant', cval=0.0, prefilter=True)[源代码][源代码]#
旋转数组。
数组在由 axes 参数指定的两个轴定义的平面内进行旋转,使用请求阶数的样条插值。
- 参数:
- 输入array_like
输入数组。
- 角度浮动
旋转角度,单位为度。
- 轴两个整数的元组,可选
定义旋转平面的两个轴。默认是前两个轴。
- 重塑bool, 可选
如果 reshape 为真,输出形状会适应,使得输入数组完全包含在输出中。默认为真。
- 输出数组或数据类型,可选
要放置输出的数组,或返回数组的 dtype。默认情况下,将创建一个与输入具有相同 dtype 的数组。
- 顺序int, 可选
样条插值的顺序,默认是 3。顺序必须在 0-5 的范围内。
- 模式{‘reflect’, ‘grid-mirror’, ‘constant’, ‘grid-constant’, ‘nearest’, ‘mirror’, ‘grid-wrap’, ‘wrap’}, 可选
mode 参数决定了输入数组在边界之外如何扩展。默认值为 ‘constant’。每个有效值的行为如下(参见 边界模式 的额外图表和详细信息):
- ‘reflect’ (d c b a | a b c d | d c b a)
输入通过反射最后一个像素的边缘来扩展。这种模式有时也被称为半样本对称。
- ‘grid-mirror’
这是“reflect”的同义词。
- ‘常量’ (k k k k | a b c d | k k k k)
输入通过填充边缘之外的所有值来扩展,这些值由 cval 参数定义为相同的常数值。在输入边缘之外不进行插值。
- ‘grid-constant’ (k k k k | a b c d | k k k k)
输入通过填充边缘之外的所有值来扩展,这些值由 cval 参数定义为相同的常数值。插值也发生在输入范围之外的样本中。
- ‘nearest’ (a a a a | a b c d | d d d d)
输入通过复制最后一个像素来扩展。
- ‘mirror’ (d c b | a b c d | c b a)
输入通过围绕最后一个像素的中心进行反射来扩展。这种模式有时也被称为全样本对称。
- ‘grid-wrap’ (a b c d | a b c d | a b c d)
输入通过环绕到相对的边缘来扩展。
- ‘wrap’ (d b c d | a b c d | b c a b)
输入通过环绕到相对的边缘来扩展,但这种方式使得最后一个点和初始点完全重叠。在这种情况下,重叠点的采样选择并不明确。
- cval标量,可选
如果 mode 是 ‘constant’,则用于填充输入边缘之外的值。默认值为 0.0。
- 预过滤器bool, 可选
确定是否在插值之前使用
spline_filter
对输入数组进行预过滤。默认值为 True,这将创建一个临时的 float64 数组来存储过滤后的值,如果 order > 1。如果设置为 False,则如果 order > 1,输出将略微模糊,除非输入已经预过滤,即它是原始输入上调用spline_filter
的结果。
- 返回:
- 旋转ndarray
旋转的输入。
注释
对于复数 输入,此函数独立旋转实部和虚部。
Added in version 1.6.0: 复数值支持已添加。
示例
>>> from scipy import ndimage, datasets >>> import matplotlib.pyplot as plt >>> fig = plt.figure(figsize=(10, 3)) >>> ax1, ax2, ax3 = fig.subplots(1, 3) >>> img = datasets.ascent() >>> img_45 = ndimage.rotate(img, 45, reshape=False) >>> full_img_45 = ndimage.rotate(img, 45, reshape=True) >>> ax1.imshow(img, cmap='gray') >>> ax1.set_axis_off() >>> ax2.imshow(img_45, cmap='gray') >>> ax2.set_axis_off() >>> ax3.imshow(full_img_45, cmap='gray') >>> ax3.set_axis_off() >>> fig.set_layout_engine('tight') >>> plt.show()
>>> print(img.shape) (512, 512) >>> print(img_45.shape) (512, 512) >>> print(full_img_45.shape) (724, 724)