OpenCV Python 调整图像大小和旋转

OpenCV Python 调整图像大小和旋转

在本章中,我们将学习如何利用OpenCVPython调整图像的大小和旋转。

调整图像大小

可以使用cv2.resize()函数将图像缩放或放大。

resize()函数的用法如下 –

resize(src, dsize, dst, fx, fy, interpolation)

一般来说,插值是一种估计已知数据点之间的值的过程。

当图形数据中存在间隙时,但间隙的两边或间隙内的特定点有可用数据。插值允许我们估计间隙内的值。

在上述resize()函数中,插值标志确定用于计算目标图像大小的插值类型。

插值类型

插值类型如下:

  • INTER_NEAREST - 最近邻插值。

  • INTER_LINEAR - 双线性插值(默认)。

  • INTER_AREA - 使用像素面积关系重新采样。这是图像缩减的首选方法,但当图像被放大时,其效果类似于INTER_NEAREST方法。

  • INTER_CUBIC - 一个4×4像素邻域的双三次插值。

  • INTER_LANCZOS4 - 一个8×8像素邻域的Lanczos插值。

首选的插值方法是cv2.INTER_AREA用于缩小和cv2.INTER_CUBIC(慢)和cv2.INTER_LINEAR用于放大。

示例

以下代码将“messi.jpg”图像的高度和宽度缩小到原来的一半。

import numpy as np
import cv2
img = cv2.imread('messi.JPG',1)
height, width = img.shape[:2]
res = cv2.resize(img,(int(width/2), int(height/2)), interpolation =
cv2.INTER_AREA)

cv2.imshow('image',res)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

OpenCV Python 调整图像大小和旋转

旋转图像

OpenCV使用仿射变换函数进行对图像的操作,如平移和旋转。仿射变换是一种可用矩阵乘法(线性变换)和向量加法(平移)表示的变换。

cv2模块提供了两个函数 cv2.warpAffinecv2.warpPerspective ,您可以使用它们进行各种变换。cv2.warpAffine接受一个2×3的变换矩阵作为输入,而cv2.warpPerspective接受一个3×3的变换矩阵作为输入。

为了找到旋转的变换矩阵,OpenCV提供了一个函数 cv2.getRotationMatrix2D ,如下所示:

getRotationMatrix2D(center, angle, scale)

然后我们将 warpAffine 函数应用于getRotationMatrix2D()函数返回的矩阵,以获得旋转后的图像。

以下程序将原始图像旋转90度,而不改变尺寸 –

示例

import numpy as np
import cv2
img = cv2.imread('OpenCV_Logo.png',1)
h, w = img.shape[:2]

center = (w / 2, h / 2)
mat = cv2.getRotationMatrix2D(center, 90, 1)
rotimg = cv2.warpAffine(img, mat, (h, w))
cv2.imshow('original',img)
cv2.imshow('rotated', rotimg)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

原始图片

OpenCV Python 调整图像大小和旋转

旋转的图片

OpenCV Python 调整图像大小和旋转

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程