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

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.xdnf.cn/news/600661.html

相关文章:

  • 服务器异常数据问题解决 工具(tcpdump+wireshark+iptables)
  • 一、OpenCV的基本操作
  • .NET外挂系列:6. harmony中一些实用的反射工具包
  • 49 python Matplotlib之Pandas 数据可视化
  • 指纹浏览器+代理IP:跨境出海如何隔离+防封?
  • webpack学习笔记
  • 【HarmonyOS 5】Map Kit 地图服务之应用内地图加载
  • 遥感解译项目Land-Cover-Semantic-Segmentation-PyTorch之二训练模型
  • 爱普生晶振赋能UWB汽车数字钥匙,解锁未来出行新方式
  • 【Harmony OS】作业四 布局
  • 掌握 npm 核心操作:从安装到管理依赖的完整指南
  • SpringCloud——MybatisPlus
  • CMake创建C++项目与npm创建nodejs项目异曲同工
  • 基于 ARIMA 与贝叶斯回归的时间序列分析:结合趋势季节性与不确定性量化(附 PyTorch 变分贝叶斯实现)
  • AWS EC2实例安全远程访问最佳实践
  • uniapp原生插件
  • Profibus转Profinet网关赋能鼓式硫化机:智能化生产升级的关键突破
  • 多模态大语言模型arxiv论文略读(九十一)
  • vscode使用ssh链接服务器
  • 飞桨(PaddlePaddle)在机器学习全流程(数据采集、处理、标注、建模、分析、优化)
  • [论文阅读]Pandora: Jailbreak GPTs by Retrieval Augmented Generation Poisoning
  • [ Qt ] | 常见控件(一)
  • Oracle 基础知识作业的使用
  • NLP入门指南:零基础理解自然语言处理
  • 医学人工智能中的分层处理与跨模态融合:深度架构设计研究(基础教程.下)
  • Ensp --四路由练习
  • fpga-编程线性序列机和状态机
  • MySQL 派生表查询导致 Crash 的根源分析与解决方案
  • (万字长文)Django数据库操作——ORM:数据交互显示前端网页
  • JVM——Java 虚拟机的监控及诊断工具(GUI 篇)