当前位置: 首页 > article >正文

opencv 图像的平移和旋转

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

原图im

平移im_shifted

旋转im_rotated

# 图像仿射变换
# 步骤: 读取图像 -> 创建仿射变换矩阵 -> 仿射变换计算
#    平移变换矩阵:一种写法,直接写死
#    旋转变换矩阵:根据角度、中心点、缩放比例计算import numpy as np
import cv2def 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]])# 执行仿射变换:warpAffineshifted = cv2.warpAffine(img, # 原图M,   # 仿射变换矩阵(w, h)) # 输出图像的宽、高return shifteddef 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()

http://www.lryc.cn/news/2384944.html

相关文章:

  • IDEA2025版本使用Big Data Tools连接Linux上Hadoop的HDFS
  • hysAnalyser特色的TS流编辑、剪辑和转存MP4功能说明
  • Day125 | 灵神 | 二叉树 | 二叉树中的第K大层和
  • Google机器学习实践指南(学习速率篇)
  • JS实现直接下载PDF文件
  • 使用KubeKey快速部署k8s v1.31.8集群
  • FreeSWITCH 纯内网配置
  • leetcode hot100:十四、解题思路大全:真·大全!
  • kali的简化安装
  • 交换机的连接方式堆叠和级联
  • Vortex GPGPU的github流程跑通与功能模块波形探索(三)
  • React深度解析:Hooks体系与Redux Toolkit现代状态管理实践
  • 实用蓝牙耳机哪款好?先做好使用场景分析!
  • Rules and Monetization
  • 防火墙NAT地址组NAT策略安全策略
  • python开发环境管理和包管理
  • Windows 使用 WSL 安装 Ubuntu
  • .jsx文件和.tsx文件有什么区别
  • 第九天的尝试
  • 每日算法 -【Swift 算法】寻找字符串中最长回文子串(三种经典解法全解析)
  • 《Cesium全生态解析:从入门到精通的3D地理空间开发指南》
  • pytorch LSTM 结构详解
  • 流程自动化引擎:重塑企业数字神经回路
  • nginx web服务日志分析
  • VSCode+EIDE通过KeilC51编译,使VSCode+EIDE“支持”C和ASM混编
  • 5.23本日总结
  • 游戏引擎学习第298天:改进排序键 - 第1部分
  • Mysql篇-优化
  • Java 集合框架核心知识点全解析:从入门到高频面试题(含 JDK 源码剖析)
  • 一文详解生成式 AI:李宏毅《生成式 AI 导论》学习笔记