有时, 有必要转换加载的图像。在图像处理中, 我们需要调整图像大小以执行特定操作。图像通常存储在Numpy ndarray(array)中。 ndarray.shape用于获取图像的尺寸。通过使用标注变量的索引, 我们可以获取每个像素的通道的宽度, 高度和数量。
范例:1
import cv2img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)scale = 60width = int(img.shape[1] * scale / 100)height = int(img.shape[0] * scale / 100)dim = (width, height)# resize imageresized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)print('Resized Dimensions : ', resized.shape)cv2.imshow("Resized image", resized)cv2.waitKey(0)cv2.destroyAllWindows()
输出
Resized Dimensions : (199, 300, 3)
文章图片
【OpenCV调整图像大小】调整图像大小意味着更改图像的尺寸, 宽度或高度以及两者。而且, 可以通过调整图像的大小来保持原始图像的纵横比。 OpenCV提供cv2.resize()函数来调整图像大小。语法为:
cv2.resize(src, dsize[, dst[, fx[, fy[, interpolation]]])
参数:
- src-源/输入图像(必需)。
- dsize-输出图像的所需大小(必填)
- fx-沿水平轴的比例因子。(可选)
- fy-沿垂直轴的比例因子。
- 插值(可选)-此标志使用以下方法:
- INTER_NEAREST-最近插值INTER_AREA-使用像素面积关系重新采样。当我们尝试进行图像缩放时, 它类似于INTER_NEAREST方法。
- INTER_CUBIC-在4×4像素邻域上的双三次插值。
- INTER_LANCOZS4-在8×8像素邻域内进行Lanczos插值。
有几种调整图像大小的方法。以下是一些执行大小调整操作的示例:
- 保留宽高比(保留图像的高宽比)
- 缩小(图像尺寸减小)
- 高档(图像尺寸增加)
- 不保留长宽比
- 仅调整宽度
- 仅调整高度
- 调整指定的宽度和高度
- 使用resize()缩小
import cv2img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)print('Original Dimensions : ', img.shape)scale = 60# percent of original sizewidth = int(img.shape[1] * scale / 100)height = int(img.shape[0] * scale / 100)dim = (width, height)# resize imageresized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)print('Resized Dimensions : ', resized.shape)cv2.imshow("Resized image", resized)cv2.waitKey(0)cv2.destroyAllWindows()
输出
Original Dimensions :(332, 500, 3)Resized Dimensions :(199, 300, 3)
文章图片
在上面的示例中, scale_per变量保存需要缩放的图像的百分比。值< 100用于缩小提供的图像。我们将使用此scale_per值以及原始图像的尺寸来计算输出图像的宽度和高度。
使用resize()升级
import cv2img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)print('Original Dimensions : ', img.shape)scale = 150# percent of original sizewidth = int(img.shape[1] * scale / 100)height = int(img.shape[0] * scale / 100)dim = (width, height)# resize imageresized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)print('Resized Dimensions : ', resized.shape)cv2.imshow("Resized image", resized)cv2.waitKey(0)cv2.destroyAllWindows()
输出
Original Dimensions :(332, 500, 3)Resized Dimensions :(398, 600, 3)
文章图片
不保留长宽比
- 仅调整宽度
import cv2img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', cv2.IMREAD_UNCHANGED)print('Original Dimensions : ', img.shape)width = img.shape[1]# keep original widthheight = 440 dim = (width, height)# resize imageresized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)print('Resized Dimensions : ', resized.shape)cv2.imshow("Resized image", resized)cv2.waitKey(0)cv2.destroyAllWindows()
输出
Original Dimensions :(332, 500, 3)Resized Dimensions :(440, 500, 3)
文章图片
- 调整高度
import cv2img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)print('Original Dimensions : ', img.shape)width = img.shape[1]# keep original widthheight = 200dim = (width, height)# resize imageresized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)print('Resized Dimensions : ', resized.shape)cv2.imshow("Resized image", resized)cv2.waitKey(0)cv2.destroyAllWindows()
输出
Original Dimensions :(332, 500, 3)Resized Dimensions :(200, 500, 3)
文章图片
调整特定的宽度和高度
- 我们可以指定宽度和高度。
import cv2img = cv2.imread(r'C:\Users\DEVANSH SHARMA\cat.jpeg', 1)print('Original Dimensions : ', img.shape)width = 350height = 450dim = (width, height)# resize imageresized = cv2.resize(img, dim, interpolation=cv2.INTER_AREA)print('Resized Dimensions : ', resized.shape)cv2.imshow("Resized image", resized)cv2.waitKey(0)cv2.destroyAllWindows()
输出
文章图片
推荐阅读
- OpenCV视频捕获
- OpenCV绘图函数
- 安装OpenCV详细步骤
- OpenCV读取并保存图像
- OpenCV鼠标事件
- OpenCV人脸检测的局限性
- OpenCV图像阈值
- OpenCV图像旋转
- OpenCV图像侵蚀和膨胀