图像旋转90/180 opencv坐标系

9 篇文章 0 订阅
5 篇文章 0 订阅

问题描述:

图像旋转90、180、270等

使用类似下面的代码,会有黑边,图像变形之类的问题

其实windows系统自带类似的功能,但是我需要批量处理图像,因此尝试自己写

 

算法基础:

这种直角的旋转,个人理解不涉及到一些插值的东西,只是像素坐标变换

示例图图像:

 

逆时针旋转90度:

计算好旋转后各像素点的位置,映射过去就行

就像图像中黄色的点,逆时针旋转90度之后是图像的原点

 

opencv+python(numpy)实现:

import cv2
import numpy as np

def main():
    # 1.随机创建图片
    img_src = cv2.imread(r'11.jpg')
    height, width = img_src.shape[:2]
    print("img width:%d height:%d" % (width, height))

    # 2.创建X,Y map
    map_x = np.zeros([width, height], np.float32)
    map_y = np.zeros([width, height], np.float32)

    # 3.执行重映射 调整 X Y map位置
    for i in range(width):
        for j in range(height):
            map_x.itemset((i, j), i)#width -1 - i
            map_y.itemset((i, j), j)

    # 4.执行重映射处理
    img_dst = cv2.remap(img_src, map_x, map_y, cv2.INTER_LINEAR)

    # 5.显示结果
    cv2.imwrite("qqq\img_yes_1_1_0_1.jpg", img_dst)

    cv2.waitKey()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    main()

记不住在哪抄的了,个人觉得这个代码写的真是不错,有水平很python,简洁

这段代码跑出来是照着对角线旋转,如果想逆时针90度需要将map_x.itemset((i, j), i) 改为map_x.itemset((width - 1 - i, j), i),要怎么旋转全看这个位置

结果:

opencv+C++实现:

https://blog.csdn.net/andylanzhiyong/article/details/84857915

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值