• openCV—Python(5)—— 图像几何变换


    一、函数简单介绍

    1、warpAffine—图像放射变换(平移、旋转、缩放)

    函数原型:warpAffine(src, M, dsize, dst=None, flags=None, borderMode=None, borderValue=None)

    src:原图像矩阵;

    M:变换矩阵;

    dszie:图像尺寸(大小)

    其他參数默认就可以。

    2、flip—图像翻转

    函数原型:flip(src, flipCode, dst=None)

    sre:原图像矩阵。

    flipCode:翻转方向:1:水平翻转;0:垂直翻转;-1:水平垂直翻转

    dst:默认就可以

    二、实例演练

    1、读取一幅图像:

    1)向x轴正方向平移25个像素。

    2)向y轴正方向平移50个像素;

    2、读取一幅图像:

    1)向x轴负方向平移50个像素;

    2)向y轴负方向平移90个像素。

    代码例如以下:

    #encoding:utf-8
    import numpy as np
    import cv2
    image = cv2.imread("H:\img\lena.jpg")
    cv2.imshow("Original",image)
    M = np.float32([[1,0,25],[0,1,50]])#平移矩阵1:向x正方向平移25,向y正方向平移50
    shifted = cv2.warpAffine(image,M,(image.shape[1],image.shape[0]))
    cv2.imshow("Shifted Down and Right",shifted)
    cv2.waitKey(0)
    M = np.float32([[1,0,-50],[0,1,-90]])#平移矩阵2:向x负方向平移-50,向y负方向平移-90
    shifted = cv2.warpAffine(image,M,(image.shape[1],image.shape[0]))
    cv2.imshow("Shifted Up and Left",shifted)
    cv2.waitKey(0)

    结果例如以下:
    1、原图像
    这里写图片描写叙述
    2、x-25,y-50
    这里写图片描写叙述
    3、x-50,y-90
    这里写图片描写叙述

    3、读取一幅图像:

    1)旋转45度,缩放0.75;

    4、读取一幅图像:

    1)旋转-45度,缩放1.25;

    代码例如以下:

    #encoding:utf-8
    import numpy as np
    import cv2
    image = cv2.imread("H:\img\lena.jpg")
    
    cv2.imshow("Original",image)
    cv2.waitKey(0)
    (h,w) = image.shape[:2]
    center = (w / 2,h / 2)
    
    #旋转45度,缩放0.75
    M = cv2.getRotationMatrix2D(center,45,0.75)#旋转缩放矩阵:(旋转中心,旋转角度,缩放因子)
    rotated = cv2.warpAffine(image,M,(w,h))
    cv2.imshow("Rotated by 45 Degrees",rotated)
    cv2.waitKey(0)
    #旋转-45度。缩放1.25
    M = cv2.getRotationMatrix2D(center,-45,1.25)#旋转缩放矩阵:(旋转中心。旋转角度,缩放因子)
    rotated = cv2.warpAffine(image,M,(w,h))
    cv2.imshow("Rotated by -90 Degrees",rotated)
    cv2.waitKey(0)

    结果例如以下:
    1、原图像
    这里写图片描写叙述
    2、theta-45,0.75
    这里写图片描写叙述
    3、theta- -45,1.25
    这里写图片描写叙述

    5、读取一幅图像:

    1)水平翻转。

    2)垂直翻转;

    3)水平垂直翻转;

    代码例如以下:

    #encoding:utf-8
    import cv2
    #
    #图像翻转
    #
    
    image = cv2.imread("H:\img\lena.jpg")
    cv2.imshow("Original",image)
    cv2.waitKey(0)
    
    #图像水平翻转
    flipped = cv2.flip(image,1)
    cv2.imshow("Flipped Horizontally", flipped)
    cv2.waitKey(0)
    
    #图像垂直翻转
    flipped = cv2.flip(image,0)
    cv2.imshow("Flipped Vertically", flipped)
    cv2.waitKey(0)
    
    #图像水平垂直翻转
    flipped = cv2.flip(image,-1)
    cv2.imshow("Flipped Horizontally & Vertically", flipped)
    cv2.waitKey(0)

    结果例如以下:
    1、原图像
    这里写图片描写叙述
    2、水平翻转
    这里写图片描写叙述
    3、垂直翻转
    这里写图片描写叙述
    4、水平垂直翻转
    这里写图片描写叙述

  • 相关阅读:
    SQL语句基础之 单表查找
    SQL语句基础之 管理数据库,表 和 数据
    JavaWeb之 JSP:自定义标签
    JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础
    JavaWeb之 JSP基础
    JavaWeb之Servlet:Cookie 和 Session
    JavaWeb之Servlet: ServletConfig 与 ServletContext
    JavaWeb之 Servlet执行过程 与 生命周期
    JavaWeb之Servlet:请求 与 响应
    Vue.js中 watch(深度监听)的最易懂的解释
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7384489.html
Copyright © 2020-2023  润新知