gpt4 book ai didi

python - 在 Python 中旋转图像

转载 作者:行者123 更新时间:2023-12-01 08:04:27 26 4
gpt4 key购买 nike

我对 scipy 的 ndimage.rotate 方法的实现有疑问,特别是与它在将数组旋转任意数量时实际工作的方式有关,以及它是否保留数组中包含的数字?

我正在尝试找到一种方法来旋转一些数组,同时保留数组中的数字并且不会丢失任何信息。

我尝试通过初始化一些内部具有已知形状的数组来测试它,但我注意到,如果你初始化一些特定的形状,例如十字形,那么当你旋转一定量时,十字形将变成正方形,我担心我会在这里丢失信息。

matr_1= [[0, 1, 0, 0, 0, 0],
[1, 1, 1, 0, 0, 0],
[0, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0],
[0, 0, 0, 1, 1, 1],
[0, 0, 0, 0, 1, 0]]

matr_2= [[0, 0, 1, 0, 0, 0],
[0, 1, 1, 1, 0, 0],
[0, 0, 1, 0, 0, 0],
[0, 0, 0, 0, 1, 0],
[0, 0, 0, 1, 1, 1],
[0, 0, 0, 0, 1, 0]]

plt.imshow(matr_1)

plt.show()

print("Rotation by 45 degrees")

print(sp.ndimage.rotate(matr_1, 45, reshape=False))

plt.imshow(sp.ndimage.rotate(matr_1,45,reshape=False))

plt.show()

print("Rotation by 55 degrees")

print(sp.ndimage.rotate(matr_2, 90, reshape=False))

plt.imshow(sp.ndimage.rotate(matr_1,90,reshape=False))

我知道这可能是所有旋转算法固有的问题,但我想了解哪些操作实际上应用于数组。

最佳答案

在有疑问时阅读您正在使用的开源库的代码是一个很好的练习。链接如下:

https://github.com/scipy/scipy/blob/v1.2.1/scipy/ndimage/interpolation.py#L634

您会注意到旋转是由旋转矩阵定义的,此处定义为:

    m11 = math.cos(angle)
m12 = math.sin(angle)
m21 = -math.sin(angle)
m22 = math.cos(angle)
matrix = numpy.array([[m11, m12],
[m21, m22]], dtype=numpy.float64)

在离散图像中,对于不是 90 倍数的角度,损失是不可避免的。

关于python - 在 Python 中旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55604432/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com