如何使用OpenCV在Python中执行图像平移?
将图像位置朝特定方向移动称为图像平移。要执行图像平移,我们首先应该了解什么是平移矩阵以及如何利用OpenCV和NumPy定义它。
如果我们想要在 (x,y) 方向偏移,偏移量分别为 (tx,ty)。其中,tx 是水平方向的偏移量,ty 是垂直方向的偏移量。使用 (tx,ty),我们可以将平移矩阵 M 定义为下面的形式 −
平移矩阵 M 是类型为 np.float32 的 numpy 数组。我们将 M 传递给 cv2.warpAffine() 函数作为一个参数。请看以下语法 −
语法
在这里,
- img − 要移动的图像。
-
M − 上述定义的平移矩阵。
-
(w, h) − 平移后图像的宽度和高度。
注意 − tx 的正值会使图像向右移,而负值会使图像向左移。同样地, ty 的 正值将使图像向下移动,而 负值将使图像向上移动。
步骤
要执行图像平移,可以按照下面的步骤进行−
导入所需的库。在下面的所有 Python 示例中,需要的 Python 库为 OpenCV 和 NumPy。确保已经安装它。
使用 cv2.imread() 函数读取输入图像。传递输入图像的完整路径。
定义平移矩阵 M。这里我们取 (tx,ty) = (100,50),即向右移动100个像素,向下移动50个像素。
使用上述定义的平移矩阵对输入图像进行平移。
显示已平移的图像。
示例 1
在此示例中,我们将以水平向右100个像素和垂直向下50个像素平移输入图像。
输出
当运行以上程序时,将生成以下输出窗口。
示例2
在此程序中,我们执行四个不同的平移。
输出
当你运行上面的程序时,它将产生如下输出窗口。
请注意,第一张图显示图像向左移动了50像素,第二张图显示图像向右移动了50像素,第三张图显示图像向上移动了50像素,最后一张图显示图像向下移动了50像素。