图像旋转python和numpy实现

给定一张图片,如何在不使用PIL、OpenCV这些库的情况下,单独使用Numpy库实现图片旋转。

“talk is easy, show me the code!”

常见旋转有:上下翻转、左右翻转、旋转180度、逆时针旋转90度、顺时针旋转90度。

(1)上下翻转

图片沿着图片中心的水平线,上下翻转,第一行调换到倒数第一行,第二行调换到倒数第二行,以此类推。

python实现:

# 上下翻转 = 颠倒各个行的顺序

arr_up = arr[::-1, ...] # 这一行等价于arr[::-1]

(2)左右翻转

图片沿着图片中心的垂直线,左右翻转,第一列调换到倒数第一列,第二列调换到倒数第二列,以此类推。

python实现:

# 左右翻转 = 颠倒各个列的顺序

arr_lr = arr[:, ::-1]

(3)旋转180度

以图片中心点为原点,顺时针或者逆时旋转180度,左上角元素换到右下角,左下角元素换到右上角。

python实现:

# 旋转180度 = 先上下翻转再左右翻转,或者先左右翻转再上下翻转

arr_180 = arr[::-1, ...][:, ::-1]

(4)逆时针旋转90度

以图片中心为旋转原点,第一行换到第一列,最后一行换到最后一列。

python实现:

# 逆时针旋转90度 = 等价于矩阵的转置 + 上下翻转

arr_n90 = np.transpose(arr, axes=(1, 0, 2))[::-1, ...]

(5)顺时针旋转90度

以图片中心为旋转中心,第一列换到最后一列,最后一列换到第一列。

python实现:

# 顺时针旋转90 = 等价于先旋转180度,再逆时针旋转90度

arr_s90 = np.transpose(arr[::-1, ...][:, ::-1], axes=(1, 0, 2))[::-1, ...]

以汽车为例,各个旋转的效果如下:

如果需要完整python代码,可以添加微信公众号:kelly学技术,回复:图像旋转

--over --

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值