1.4 Python图像的坐标变换-仿射变换

文章目录

  • 1.4 Python图像的坐标变换-仿射变换
    • 1 算法原理
    • 2 代码
    • 3 效果

1 算法原理

图像的几何变换,也就是矩阵乘法。

通过仿射变换将图片中的每个像素点按照一定的规律映射到新的位置,仿射变换可以由一个矩阵A和一个向量B给出:

原像素点坐标(x,y),经过仿射变换后的点的坐标是T(u,v),则矩阵仿射变换基本算法原理:

齐次坐标矩阵表示形式为:

2 代码

运行代码说明

1.要改变代码中的地址,我的地址说明,我是把待处理图片统一放在一个(同级)image文件夹,用os.listdir(base)读取图片名称列表,base是存放图片文件夹的相对路径,也可以是绝对路径

最后在os.path.join(base,path)代码中合并base和图片名称,得到完整图片地址

2.如果想更改为读取同目录下图片,可以将读取图片路径的几句代码可以改为

原来

base = r'../image'
paths = os.listdir(base)
for path in paths:img = cv.imread(os.path.join(base,path), 1)

改为

paths = ['img1.jpg','img2.jpg','img3.png'......]
for path in paths:print(path)# 读取图片 1 是加载彩色图像。任何图像的透明度都会被忽视。它是默认标志。img = cv.imread(path, 1)

3.注意最后的plt.savefig('1.new' + path)是保存plt图像,如果不使用可以注释掉

import osimport numpy as np
import cv2
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号base = r'../image'  # 注意,我是通过循环一次性处理3张图片的
paths = os.listdir(base)
for path in paths:img = cv2.imread(os.path.join(base,path), 1)height, width = img.shape[:2]  # 405x413# 在原图像和目标图像上各选择三个点matSrc = np.float32([[0, 0],[0, height-10],[width-1, 0]])matDst = np.float32([[0, 0],[90, height-90],[width-30, 30]])# 得到变换矩阵matAffine = cv2.getAffineTransform(matSrc, matDst)# 进行仿射变换dst = cv2.warpAffine(img, matAffine, (width,height))fig = plt.figure()ax1 = fig.add_subplot(121)ax1.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))ax1.set_title('原图')ax2 = fig.add_subplot(122)ax2.imshow(cv2.cvtColor(dst, cv2.COLOR_BGR2RGB))ax2.set_title('仿射变换')# plt.savefig('4.new' + path)plt.show()  # 显示图片

3 效果

1.4 Python图像的坐标变换-仿射变换相关推荐

  1. 1.2 Python图像的坐标变换-尺度变换

    1.2 Python图像的坐标变换-尺度变换 文章目录 1.2 Python图像的坐标变换-尺度变换 1 算法原理 2 代码 3 效果 1 算法原理 图像的几何变换,也就是矩阵乘法. 尺度变换是在原来 ...

  2. 1.1 python图像的坐标变换-平移变换

    第一章 图像的坐标变换-平移变换 文章目录 第一章 图像的坐标变换-平移变换 1算法原理 2 代码 3 效果 1算法原理 图像的几何变换,也就是矩阵乘法. 平移变换是在原来像素加上一个平移值,加法公式 ...

  3. python图像中如何显示中文

    python图像中如何显示中文 在开头加入这两行即可 from pylab import * mpl.rcParams['font.sans-serif'] = ['SimHei']

  4. 【Tool】Augmentor和imgaug——python图像数据增强库

    Augmentor和imgaug--python图像数据增强库 Tags: ComputerVision Python 介绍两个图像增强库:Augmentor和imgaug,Augmentor使用比较 ...

  5. python怎么计算图像梯度_opencv python图像梯度实例详解

    这篇文章主要介绍了opencv python图像梯度实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一阶导数与Soble算子 二阶导数与拉普 ...

  6. python图像增强_【Tool】Augmentor和imgaug——python图像数据增强库

    Augmentor和imgaug--python图像数据增强库 Tags: ComputerVision Python 介绍两个图像增强库:Augmentor和imgaug,Augmentor使用比较 ...

  7. python图像resize_Python图像resize前后颜色不一致问题

    今天帮师姐解决一个bug,测试了Python图像resize前后颜色不一致问题. 代码片段执行的功能:图像指定倍数超分辨率,输入为[0-1] float型数据,输出为格式不限的图像 bug:输入图像与 ...

  8. Python中的图像处理(第六章)Python图像量化及采样处理(2)

    Python中的图像处理(第六章)Python图像量化及采样处理(2) 前言 一. Python准备 二. Python仿真 三. 小结 前言 随着人工智能研究的不断兴起,Python的应用也在不断上 ...

  9. python图像音频处理-通过图像傅里叶变换判断相位和幅度的重要性

    python图像音频处理-判断相位和幅度的重要性 这一步骤思想很简单.分别将两个图像或两个音频做FFT,再选取图像1/音频1的幅度,结合上图像2/音频2的相位,再做IFFT.看返回的图像或音频更接近图 ...

最新文章

  1. 在CentOS 6.9 x86_64上玩转OpenResty 1.13.6.1中的resty-cli模块
  2. 机器学习中数据处理与可视化的python、numpy等常用函数
  3. 在Eclipse自带的built-in server里运行PHP文件
  4. leetcode-665-Non-decreasing Array
  5. C#设计模式(2)——简单工厂模式
  6. 超文本css样式换行
  7. 确认!聚划算百亿补贴要向iPad 8等新品下手,这次是真的刚刚好
  8. C语言 static静态变量
  9. cocos2dx 字体外发光_Cocos2d-x 3.x开发塔防游戏《王国保卫战》02:地图(一)
  10. 计算机课题类型是什么意思,课题类型是什么意思
  11. 从认知语言学的角度来看计算机没有,从认知语言学的角度来看「ところ」
  12. 免疫算法在物流配送中心选址中的应用
  13. java你应该学会什么
  14. SQLHelper蓦然回首
  15. 天正菜单栏不见了怎么显示出来_天正CAD中菜单栏不见了如何调出来?
  16. java实现 poi XWPFDocument 读取word文档
  17. 文件或目录损坏且无法读取的解决办法大集合
  18. 全球及中国IC卡水表行业销售策略及竞争趋势预测报告(2022-2027)
  19. DPU — 完全可编程网络
  20. MySQL数据库教程天花板,mysql安装到mysql高级,强|硬 宋红康版

热门文章

  1. RTSP流媒体服务搭建
  2. 张祖勋:摄影测量的信息化与智能化
  3. java理论知识之Redis
  4. 转贴:网络游戏封包基础 作者不明
  5. C++项目实现多国语言解决方案
  6. mysql 一对多查询时,把多的一方整合到一的一方用逗号隔开
  7. 有哪些无副作用的助眠神器推荐,五款助眠神器帮你告别失眠困扰
  8. 如何进行系统性能优化
  9. ProgressBar使用
  10. Ubuntu16.04 搭建FTP服务器,设置用户权限为只许上传、禁止下载和删除