Python中的仿射变换2025年1月5日 | 阅读 5 分钟 什么是仿射变换?仿射变换是一种几何变换过程,其中原始图像被变换,使得输出图像保持平行。这保持了共线性、直线的平行性以及两点之间距离的比率。仿射变换由矩阵映射 (x / -> Mx + b) 表示,其中 M 是线性矩阵,b 是偏移向量。仿射变换包括平移、旋转、缩放、剪切等变换。 我们将使用 OpenCV 在 Python 中执行仿射变换。 关于 OpenCVOpenCV 是一个用于机器学习、计算机视觉和图像处理的开放源代码库。它用于通过处理图像和视频来识别和识别物体、面部以及许多其他事物,例如手写图像。仿射变换是一种用于修复几何缺陷的变换类型。仿射变换表示为 2x3 矩阵。 仿射变换中有几种变换
在实现之前,我们需要使用 pip 命令下载 opencv-python 库 现在,我们将导入库 在这里,我们将了解仿射变换的不同方法和函数。 cv2.getPerspectiveTransform 方法此函数用于使用三个对应点对来评估仿射变换。它形成一个 2x3 的仿射变换矩阵。 getPerspectiveTransform( ) 方法的语法 其中
也可以写成 cv2.warpAffine( ) 方法它用于评估和实现重映射例程。 cv2.warpAffine( ) 方法的语法 其中
让我们来实现仿射变换并理解它处理不同变换的不同方法。 使用 getAffineTransform( ) 和 warpAffine( ) 方法它用于通过将图像从一个位置移动到另一个位置来平移图像。 代码 输出 ![]() 此代码显示了 cv2.getAffineTransform( ) 和 cv2.warpAffine( ) 函数的使用,以对图像实现仿射变换。我们首先导入所需的库,然后读取图像。然后,使用 getAffineTransform( ) 和 warpAffine( ) 函数,我们变换了图像。输出既包括输入图像也包括变换后的输出图像。 现在,我们将实现包括缩放、旋转等在内的多种变换,使用仿射变换。 图像旋转仿射变换中的图像旋转是指图像以圆形运动方式移动。它以顺时针和逆时针方向旋转图像。要旋转图像,使用 cv2.rotate( ) 函数。它以 90 度的倍数旋转图像。 cv2.rotate( ) 函数的语法 其中
参数 rotation 接受三个值,用于指定如何旋转图像
下面是仿射变换中旋转图像的实现。 代码 输出 ![]() 在这里,我们导入了所有必要的库,并使用 imread( ) 函数读取了图像。然后,使用 rotate( ) 函数,我们通过其代码以每次旋转的方式旋转了图像。 图像缩放缩放是指调整图像大小。它会导致像素信息发生变化。当我们减小图像大小时,我们需要对像素进行重采样,而当我们增大图像大小时,我们需要重建图像。我们可以使用插值方法来缩放图像。它使用 cv2.resize( ) 函数实现。 resize( ) 函数的语法 其中
让我们通过在 Python 中实现来理解图像的重采样。 代码 输出 ![]() 在此,我们导入了库并使用了 resize( ) 函数来缩放图像。我们先缩小了图像尺寸,然后又放大了图像。 图像透视变换透视变换是我们改变图像透视以进行更好分析的过程。它通过一个 3x3 的矩阵来进行,我们可以通过改变坐标来改变透视。要评估透视变换,我们可以使用 cv2.warpPerspective( ) 方法。 warpPerspective( ) 函数的语法 其中
在 Python 中实现透视变换 代码 输出 ![]() 我们使用了 cv2.warpPerspective( ) 和 cv2.getPerspectiveTransform( ) 函数,它们变换了图像并改变了其透视。 下一个主题使用 Python 实现人工智能虚拟助手 |
? 可疑代码将保留在 try 块中,并在 except 块中处理,以便生成异常的堆栈跟踪。为了处理创建的异常,我们将在此处输出堆栈跟踪。理解问题...
阅读 4 分钟
简介 Iris 数据集是机器学习和统计学中的经典数据集。1936 年,英国生物学家和统计学家 Ronald A. Fisher 将其作为判别分析的示例引入。该数据集包含 150 个鸢尾花样本,每个样本属于以下三个物种之一:...
阅读 4 分钟
由于 Python 语言拥有广泛的模块和工具,它们在网络爬虫领域得到了广泛应用。Beautiful Soup 和 Selenium 的组合是两个强大的库的完美示例,它们为从...提取数据提供了一种可靠的方法。
7 分钟阅读
Python 是一种高级的解释型编程语言,以其清晰和简洁而闻名。它由 Guido van Rossum 创建,并于 1991 年首次发布,通过大量使用空白来强调代码的清晰度。Python 支持多种编程范式,包括...
7 分钟阅读
Python 是一种多功能编程语言,已成为数据分析和可视化领域的强大工具。在当今复杂的数据社会中,数据分析和可视化是数据科学过程的重要组成部分。Python 提供了各种库……
7 分钟阅读
字符串插值是一种在 Python 中创建动态灵活字符串的强大方法。它允许将变量、表达式甚至函数嵌入字符串字面量中,从而生成复杂且高度可定制的输出。Python 有多种字符串插值方法,例如...
5 分钟阅读
? Python 是一种灵活且强大的编程语言,提供几种处理字符的策略和过程。无论您是解析文本信息、控制字符串还是执行文本处理任务,Python 都提供了一套丰富的工具来高效地处理与字符相关的任务。在此...
阅读 6 分钟
让我们分解一下用于图像分类的卷积神经网络 (CNN) 的组件,但不提供具体代码。用于图像分类的典型 CNN 由以下元素组成:输入层:输入层接收输入图像的原始像素值。此大小...
阅读20分钟
介绍:在本教程中,我们将学习 Python sympy 中的 Matrix.rref() 方法。rref 的全称是 Reduced Row-Echelon Form 库。矩阵的行阶梯表示高斯消元法是在行中完成的,列阶梯表示高斯消元法是在...
阅读 3 分钟
什么是虚拟助手? 一种基于人工智能的程序,能够识别人类语音和命令,并根据这些命令执行任务,这被称为虚拟助手。它可以通过文本或人类语音接收命令。虚拟助手的主要目标是...
阅读 12 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India