2020-04-11 11:42:22 --Edit by yangray
以下所有类(除了BboxTransformToMaxOnly )都直接继承于Affine2DBase

IdentityTransform专门做高效的原地变换(变换前后不变)。
BboxTransform 线性地将点集从一个bbox变换到另一bbox。
BboxTransformTo 线性地将点集从单位bbox([0,0], [1,1]) 变换到指定bbox。
BboxTransformToMaxOnly 线性地将点集从单位bbox变换到指定bbox,左上角固定为原点(0, 0)。
BboxTransformFrom 线性地将点集从给定bbox变换到单位bbox
ScaledTranslation 对位移量进行伸缩控制的位移变换。

IdentityTransform(Affine2DBase):
方法:
  • frozen(self):

    返回静态的变换矩阵的拷贝。

  • get_matrix(self):

    返回变换矩阵。

  • transform(self, points):

    返回points(点集)作原地变换的结果。(变换之后和变换之前一样)

  • transform_path(self, path):

    参数[path]: Path对象,曲线。    

    返回对曲线path作原地变换的结果。(变换前后都一样)

  • get_affine(self):

    返回本原地变换的 self。(便于链式调用)

BboxTransform(Affine2DBase):
方法:
  • __init__(self, boxin, boxout, **kwargs):

    参数[boxin], [boxout]: Bbox对象

    创建一个BboxTransform对象,线性地将点集从boxin变换到boxout中

  •  get_matrix(self):

     返回由boxin变换到boxout的变换矩阵,包括尺度的变换,位置的变换。

    横向尺度为 boxout的宽 / boxin的宽,纵向尺度为 boxout的高 / boxin的高。

    横向位移为boxout的左边 - bbox的左边 * 横向尺度,纵向类似。

BboxTransformTo(Affine2DBase):
方法:
  • __init__(self, boxout, **kwargs):

    参数[boxout]: Bbox对象

    创建一个BboxTransformTo对象,线性地将点集从单位bbox([0,0], [1,1])变换到boxout。

  • get_matrix(self):

    返回从单位bbox变换到boxout的变换矩阵。生成方式参考BboxTransform类的同一方法。

BboxTransformToMaxOnly(BboxTransformTo):
方法
  • get_matrix(self):

    返回从单位bbox变换到boxout的变换矩阵。生成方式参考BboxTransform类的同一方法。(选择最大的变换比例)


BboxTransformFrom(Affine2DBase):
方法
  • __init__(self, boxin, **kwargs):

    参数[boxin]: Bbox实例

     创建新的BboxTransformFrom,将点集从boxin变换到单位bbox([0,0], [1,1])。

  • get_matrix(self):

    返回从boxin变换到单位box的变换矩阵。生成方式参考BboxTransform类的同一方法。

ScaledTranslation(Affine2DBase):
方法
  •  __init__(self, xt, yt, scale_trans, **kwargs):

    参数[xt], [yt]: x / y方向的位移量

     [scale_trans]: 位移的伸缩比例

     创建一个ScaledTranslation(可控位移变换)对象,x方向位移xt*scale_trans, y方向位移yt*scale_trans。

  • get_matrix(self):

    返回本ScaledTranslation(可控位移变换)的变换矩阵。

    

matplotlib 中其他基于Affine2DBase的类的更多相关文章

  1. 基于Python实现matplotlib中动态更新图片(交互式绘图)

    最近在研究动态障碍物避障算法,在Python语言进行算法仿真时需要实时显示障碍物和运动物的当前位置和轨迹,利用Anaconda的Python打包集合,在Spyder中使用Python3.5语言和mat ...

  2. asp.net中使用基于角色role的Forms验证

    http://www.cnblogs.com/yao/archive/2006/06/24/434783.html asp.net中使用基于角色role的Forms验证,大致经过几下四步:1.配置系统 ...

  3. C#中的结构体与类的区别

    经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自己总结一下,希望大家指点. 1. 首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字class 定义结构使用关键字str ...

  4. 在ASP.NET MVC中实现基于URL的权限控制

    本示例演示了在ASP.NET MVC中进行基于URL的权限控制,由于是基于URL进行控制的,所以只能精确到页.这种权限控制的优点是可以在已有的项目上改动极少的代码来增加权限控制功能,和项目本身的耦合度 ...

  5. 在Apworks数据服务中使用基于Entity Framework Core的仓储(Repository)实现

    <在ASP.NET Core中使用Apworks快速开发数据服务>一文中,我介绍了如何使用Apworks框架的数据服务来快速构建用于查询和管理数据模型的RESTful API,通过该文的介 ...

  6. 二、spring Boot构建的Web应用中,基于MySQL数据库的几种数据库连接方式进行介绍

    包括JDBC.JPA.MyBatis.多数据源和事务. 一.JDBC 连接数据库 1.属性配置文件(application.properties) spring.datasource.url=jdbc ...

  7. JAVA中的集合容器操作类

    目录 JAVA中的集合容器操作类 List集合 ArrayList的操作方法说明 LinkedList Stack Set Map Queue 总结 JAVA中的集合容器操作类 Java容器类库总共分 ...

  8. Java中各种集合(字符串类)的线程安全性!!!

    Java中各种集合(字符串类)的线程安全性!!! 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到该线程读 ...

  9. C#中的结构体与类的区别 (转载)

    经常听到有朋友在讨论C#中的结构与类有什么区别.正好这几日闲来无事,自己总结一下,希望大家指点. 1. 首先是语法定义上的区别啦,这个就不用多说了.定义类使用关键字class 定义结构使用关键字str ...

随机推荐

  1. 【MyBatis笔记】mapper文件的配置以及说明

    <!doctype html>[MyBatis笔记]mapper文件的配置以及说明 figure:last-child { margin-bottom: 0.5rem; } #write ...

  2. 最详细的 Spring Boot 多模块开发与排坑指南

    创建项目 创建一个 SpringBoot 项目非常的简单,简单到这里根本不用再提.你可以在使用 IDEA 新建项目时直接选择 Spring Initlalize 创建一个 Spring Boot 项目 ...

  3. vmware导入ova文件踩坑记

    问题来源 众所周知,所有的网络行为都会产生相应的网络流量,那么所有的网络攻击行为也有其对应的流量特点,那么是否能根据流量特点进而分析出其对应的是什么攻击行为呢? 我在虚拟机上使用vulnhub的靶场环 ...

  4. Journal of Proteomics Research | 利用混合蛋白质组模型对MBR算法中错误转移鉴定率的评估

    题目:Evaluating False Transfer Rates from the Match-between-Runs Algorithm with a Two-Proteome Model 期 ...

  5. 树莓派3B+安装&卸载mysql

    需求 在树莓派上 安装Mysql 服务,并开启远程访问 步骤 安装 mysql server 1 $ sudo apt-get install mysql-server 我以为中间会让我提示输入 数据 ...

  6. effective-java学习笔记---注解优于命名模式39

    命名模式的缺点有以下三点:(在第 4 版之前,JUnit 测试框架要求其用户通过以 test[Beck04] 开始名称来指定测试方法) 1.拼写错误导致失败,但不会提示. 2.无法确保它们仅用于适当的 ...

  7. OpenCV-Python BRIEF(二进制的鲁棒独立基本特征) | 四十二

    目标 在本章中,我们将看到BRIEF算法的基础知识 理论 我们知道SIFT使用128维矢量作为描述符.由于它使用浮点数,因此基本上需要512个字节.同样,SURF最少也需要256个字节(用于64像素) ...

  8. 构建一个简单的 Google Dialogflow 聊天机器人【上】

    概述 本教程将向您展示如何构建一个简单的Dialogflow聊天机器人,引导您完成Dialogflow的最重要功能.您将学习如何: 创建Dialogflow帐户和第一个Dialogflow聊天机器人, ...

  9. TensorFlow系列专题(七):一文综述RNN循环神经网络

    欢迎大家关注我们的网站和系列教程:http://panchuang.net/ ,学习更多的机器学习.深度学习的知识! 目录: 前言 RNN知识结构 简单循环神经网络 RNN的基本结构 RNN的运算过程 ...

  10. Ali_Cloud++:阿里云服务器防火墙相关命令

    systemctl start firewalld ##启动Firewall systemctl stop firewalld ##关闭Firewall systemctl restart firew ...