opencv 图像的平移和旋转

warpAffine函数讲解,图片可自行下载,也可用自己的图片

原图im

平移im_shifted

旋转im_rotated

python 复制代码
# 图像仿射变换
# 步骤: 读取图像 -> 创建仿射变换矩阵 -> 仿射变换计算
#    平移变换矩阵:一种写法,直接写死
#    旋转变换矩阵:根据角度、中心点、缩放比例计算

import numpy as np
import cv2

def translate(img, x, y):
    '''
    仿射变换之平移变换
    :param img: 原始图像
    :param x: x方向平移的像素点 x参数为正,图像向右平移,x参数为负,图像向左平移
    :param y: y方向平移的像素点 y参数为正,图像上下平移,y参数为负,图像向上平移
    :return: 平移后的图像
    '''
    h, w = img.shape[:2] # 取出图像高度和宽度(shape返回值(高, 宽, 通道数))
    # 构建平移变换矩阵 x轴 方向平移 x个像素点,y轴 方向平移 y个像素点
    M = np.float32([[1, 0, x],
                    [0, 1, y]])
    # 执行仿射变换:warpAffine
    shifted = cv2.warpAffine(img, # 原图
                             M,   # 仿射变换矩阵
                             (w, h)) # 输出图像的宽、高
    return shifted

def rotate(img, angle, center=None, scale=1.0):
    '''
    仿射变换之图像旋转
    :param img: 原图数据
    :param angle: 旋转的角度  正数为逆时针旋转,负数为顺时针旋转
    :param center: 旋转中心点,坐标值(x,y),默认为None
    :param scale: 缩放比例,默认为1.0,默认不做缩放
    :return: 旋转变换后的图像
    '''
    h, w = img.shape[:2] # 取图像的高、宽
    # 判断center是否为空,为空则计算原图的中心作为旋转中心点
    if center is None:
        center = (w/2, h/2) # 计算原图 中心点 x,y坐标值
    # 计算仿射变换矩阵
    M = cv2.getRotationMatrix2D(center, # 旋转中心
                                angle,  # 旋转角度
                                scale)  # 缩放比例
    # 根据仿射变换矩阵,执行旋转,并返回旋转后的结果
    rotated = cv2.warpAffine(img, M, (w, h))
    return rotated

# 写一个自己本地存放图片的路径
im = cv2.imread("../img_data/lena.jpg")
cv2.imshow("im", im)
im_shifted = translate(im, 50, 50)
cv2.imshow("im_shifted", im_shifted)

im_rotated = rotate(im, -135, None, 1.0)
cv2.imshow("im_rotated", im_rotated)


cv2.waitKey()
cv2.destroyAllWindows()
相关推荐
hans汉斯几秒前
【人工智能与机器人研究】基于力传感器坐标系预标定的重力补偿算法
人工智能·算法·机器人·信号处理·深度神经网络
cver1238 分钟前
CSGO 训练数据集介绍-2,427 张图片 AI 游戏助手 游戏数据分析
人工智能·深度学习·yolo·目标检测·游戏·计算机视觉
FreeBuf_12 分钟前
新型BERT勒索软件肆虐:多线程攻击同时针对Windows、Linux及ESXi系统
人工智能·深度学习·bert
强哥之神1 小时前
Meta AI 推出 Multi - SpatialMLLM:借助多模态大语言模型实现多帧空间理解
人工智能·深度学习·计算机视觉·语言模型·自然语言处理·llama
成都极云科技1 小时前
成都算力租赁新趋势:H20 八卡服务器如何重塑 AI 产业格局?
大数据·服务器·人工智能·云计算·gpu算力
喜欢吃豆1 小时前
从零构建MCP服务器:FastMCP实战指南
运维·服务器·人工智能·python·大模型·mcp
ai_xiaogui1 小时前
AIStarter用户与创作者模式详解:一键管理Stable Diffusion项目!
人工智能·stable diffusion·一键发布ai项目·熊哥aistarter教程·开发者必备aistarter
止步前行2 小时前
Cursor配置DeepSeek调用MCP服务实现任务自动化
人工智能·cursor·deepseek·mcp
阿星AI工作室2 小时前
AI产品经理必看的大模型微调劝退指南丨实战笔记
人工智能·产品经理·ai编程
Damon小智2 小时前
蚂蚁百宝箱实战:艺考生文化课助手的设计与搭建
人工智能·mcp