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

python学opencv|读取图像(二十七)使用cv2.warpAffine()函数平移图像

【1】引言

前序已经对图像操作进行了广泛的学习,包括读取、放大缩小,改变BGR通道值等,相关链接包括且不限于:

python学opencv|读取图像-CSDN博客

python学opencv|读取图像(三)放大和缩小图像_python(1)使用opencv读取并显示图像;(2)使用opencv对图像进行缩放;(3)使用o-CSDN博客

python学opencv|读取图像(十四)BGR图像和HSV图像通道拆分-CSDN博客 

在此基础上,我们开始学习如何平移图像。

【2】官网教程

要想图像实现平移,需要调用cv2.warpAffine()函数。点击下述链接,直达该函数的官网说明:

OpenCV: Geometric Image Transformations

在官网,我们会看到:

图1

这里的几个参数意义为:

void cv::warpAffine     (     InputArray     src, #原始输入图像
        OutputArray     dst, #输出图像
        InputArray     M, #一个2X3矩阵
        Size     dsize, #输出图像大小
        int     flags = INTER_LINEAR, #图像转换插值方式,是可选参数,保持默认即可,不是此次重点
        int     borderMode = BORDER_CONSTANT, #边界类型,是可选参数,保持默认即可,不是此次重点
        const Scalar &     borderValue = Scalar() ) #边界值,是可选参数,保持默认即可,不是此次重点

【3】平移原理

要想实现图像平移,需要对M矩阵进行操作。

此时的M矩阵有两个可选变量x和y:

M=[[1,0,x],[0,1,y]],当x>0,图像向右移动x大小的位置;当y>0,图像向右下移动y大小的位置;当x和y取负值时图像分别向左和向上运动。

【4】代码测试

使用的的原始图像src.png为:

图2

先引入模块,把图片读取进来:

import cv2 as cv # 引入CV模块
import numpy as np #引入numpy模块

# 读取图片
src = cv.imread('src.png')
rows=len(src) #读取图像行数
cols=len(src[0]) #读取图像列数

然后制定约束平移方向和大小的M矩阵:

M=np.float32([[1,0,50],
              [0,1,200]]) #M矩阵,x=50,y=200

然后把M矩阵代入cv2.warpAffine()函数,输出图像:

dst=cv.warpAffine(src,M,(cols,rows)) #输出图像
cv.imshow('src-pingyi', dst)  # 在屏幕展示绘制圆形的效果
cv.imwrite('src-pingyi.png', dst)  # 保存图像
cv.waitKey()  # 图像不会自动关闭
cv.destroyAllWindows()  # 释放所有窗口

此时获得的图像为:

图3

由图3可见,图像在x和y方向上进行了不同程度的平移。

【5】总结

掌握了python+opencv实现图像平移的操作技巧。

 


http://www.kler.cn/a/471266.html

相关文章:

  • 二维数组:求最大元素及其所在的行坐标及列坐标(PTA)C语言
  • JMeter + Grafana +InfluxDB性能监控 (二)
  • 使用WebSocket 获取实时数据
  • 行业商机信息付费小程序系统开发方案
  • asp.net core 属性路由和约定路由
  • 【数电尾灯设计】2022-8-16
  • Unity中 Xlua使用整理(一)
  • nginx 配置 本地启动
  • 移动应用安全基础:深入理解Hooking框架
  • cuda实现flash_attn_mma_share_kv源码分析
  • vue el table 不出滚动条样式显示 is_scrolling-none,如何修改?
  • Airflow:SQL Sensor 监控数据库业务变化
  • 力扣--283.移动零
  • presto权限管理
  • 计算机网络之---无线网络的传输介质
  • 使用 Flink CDC 构建 Streaming ETL
  • C++ 提升编译速度的利器:前向声明
  • 【ABAP开发环境】(三)ABAP GIT
  • 根据python代码自动生成类图的实现方法[附带python源码]
  • Python实现应用决策树的实例程序
  • model_selection.cross_val_score函数介绍
  • CES 2025:ROG打造极致游戏体验
  • python-leetcode-加油站
  • VLMs之Agent之CogAgent:《CogAgent: A Visual Language Model for GUI Agents》翻译与解读
  • 《医院项目驻场半月记:从憧憬到反思的旅程》
  • AWS re:Invent 2024 现场实录 - It‘s all about Scale