分享

图像旋转90/180 opencv坐标系

 印度阿三17 2020-12-08

问题描述:

图像旋转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

来源:https://www./content-4-779201.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多