• OpenCV自学笔记八:几何变换


    1. 缩放(Scale):

    缩放是指改变图像的尺寸大小。在OpenCV中,可以使用`cv2.resize()`函数来实现图像的缩放操作。该函数接受源图像、目标图像大小以及插值方法作为参数。

    示例代码:i

    1. mport cv2
    2. # 读取图像
    3. image = cv2.imread('input.jpg')
    4. # 缩放图像
    5. resized_image = cv2.resize(image, (800, 600))
    6. # 显示图像
    7. cv2.imshow('Resized Image', resized_image)
    8. cv2.waitKey(0)
    9. cv2.destroyAllWindows()

    2. 翻转(Flip):

    翻转是指将图像按照水平或垂直方向进行镜像处理。在OpenCV中,可以使用`cv2.flip()`函数来实现图像的翻转操作。该函数接受源图像和翻转方式(0表示沿x轴翻转,1表示沿y轴翻转,-1表示同时沿x轴和y轴翻转)作为参数。

    示例代码:

    1. import cv2
    2. # 读取图像
    3. image = cv2.imread('input.jpg')
    4. # 水平翻转图像
    5. flipped_image = cv2.flip(image, 1)
    6. # 显示图像
    7. cv2.imshow('Flipped Image', flipped_image)
    8. cv2.waitKey(0)
    9. cv2.destroyAllWindows()

    3. 仿射变换(Affine Transformation):

    仿射变换是指通过线性变换和平移变换来改变图像的形状和位置。在OpenCV中,可以使用`cv2.warpAffine()`函数来实现仿射变换。该函数接受源图像、仿射矩阵以及目标图像大小作为参数。

    示例代码:

    1. import cv2
    2. import numpy as np
    3. # 读取图像
    4. image = cv2.imread('input.jpg')
    5. # 定义仿射矩阵
    6. matrix = np.float32([[1, 0, 100], [0, 1, 50]]) # 平移变换
    7. # 进行仿射变换
    8. affine_image = cv2.warpAffine(image, matrix, (image.shape[1], image.shape[0]))
    9. # 显示图像
    10. cv2.imshow('Affine Image', affine_image)
    11. cv2.waitKey(0)
    12. cv2.destroyAllWindows()

    4. 透视变换(Perspective Transformation):

    透视变换是指通过透视关系对图像进行形状的扭曲。在OpenCV中,可以使用`cv2.getPerspectiveTransform()`函数获取透视变换矩阵,并使用`cv2.warpPerspective()`函数来应用透视变换。该函数接受源图像、透视变换矩阵以及目标图像大小作为参数。

    示例代码:

    1. import cv2
    2. import numpy as np
    3. # 读取图像
    4. image = cv2.imread('input.jpg')
    5. # 定义原始图像中四个角点的坐标
    6. original_points = np.float32([[56, 65], [368, 52], [28, 387], [389, 390]])
    7. # 定义目标图像中对应的四个角点的坐标
    8. target_points = np.float32([[0, 0], [300, 0], [0, 300], [300, 300]])
    9. # 计算透视变换矩阵
    10. perspective_matrix = cv2.getPerspectiveTransform(original_points, target_points)
    11. # 进行透视变换
    12. perspective_image = cv2.warpPerspective(image, perspective_matrix, (300, 300))
    13. # 显示图像
    14. cv2.imshow('Perspective Image', perspective_image)
    15. cv2.waitKey(0)
    16. cv2.destroyAllWindows()

    5. 重映射(Remapping):

    重映射是指根据给定的映射关系,将图像中的像素重新定位到目标图像中的位置上。在OpenCV中,可以使用`cv2.remap()`函数来实现重映射操作。该函数接受源图像、x方向映射矩阵(map_x)和y方向映射矩阵(map_y)作为参数。

    示例代码:

    1. import cv2
    2. import numpy as np
    3. # 读取图像
    4. image = cv2.imread('input.jpg')
    5. # 定义映射关系
    6. rows, cols = image.shape[:2]
    7. map_x = np.zeros((rows, cols), np.float32)
    8. map_y = np.zeros((rows, cols), np.float32)
    9. for i in range(rows):
    10. for j in range(cols):
    11. # 将像素点的位置重新定位到目标图像中
    12. map_x[i, j] = j
    13. map_y[i, j] = i
    14. # 进行重映射
    15. remapped_image = cv2.remap(image, map_x, map_y, cv2.INTER_LINEAR)
    16. # 显示图像
    17. cv2.imshow('Remapped Image', remapped_image)
    18. cv2.waitKey(0)
    19. cv2.destroyAllWindows()

  • 相关阅读:
    Java项目:SSM演唱会售票管理系统
    操作系统 | 实验七 SPOOLING技术
    【项目调优】项目从EhCache缓存变为redis之后,加载菜单变得极其缓慢
    2022年武汉市小微企业融资担保业务降费奖补标准和申报要求
    Python3-excel文档操作(三):利用openpyxl库处理excel表格:获取excel表格中的图片信息
    Domino服务器SSL证书安装指南
    结合ChatGPT和MINDSHOW自动生成PPT
    攻防世界-adworld-reverse-game
    SMART PLC高速脉冲输出如何断电保持当前位置
    CVPR2022车道线检测SOTA工作CLRNet在Tusimple数据集测试demo,助力自动驾驶早日落地
  • 原文地址:https://blog.csdn.net/m0_71721954/article/details/133123658