使用 OpenCV-Python 调整多个图像的大小
在本文中,我们将使用 OpenCV 库编写一个Python脚本来调整多个图像的大小并将它们保存为图像文件。调整图像大小是指图像的增长。测量最适合使用多个图像和机器学习应用程序。它有助于减少图像中的像素数量,并且有几个好处,例如它可以减少神经网络训练时间,因为图像中的像素数量大大增加了输入节点的数量,这也提高了模型难度。
方法:
- 首先,将所需的库加载到Python文件(argparse、OpenCV 等)中。
- 我们正在使用argparse()函数来获取我们需要执行调整大小的图像目录的路径。
- 使用 for 循环迭代目录中的每个图像。
- 使用cv2.imread()函数图像加载到变量中。
- 定义调整大小比例并设置计算的高度和宽度。
- 使用cv2.resize()函数调整图像大小。
- 使用cv2.imwrite()函数将输出文件放在输出文件夹中。
Images 文件夹中的所有图像都将被调整大小并保存在输出文件夹中。
下面是实现:
Python3
# Required Libraries
import cv2
import numpy as np
from os import listdir
from os.path import isfile, join
from pathlib import Path
import argparse
import numpy
# Argument parsing variable declared
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image",
required=True,
help="Path to folder")
args = vars(ap.parse_args())
# Find all the images in the provided images folder
mypath = args["image"]
onlyfiles = [f for f in listdir(mypath) if isfile(join(mypath, f))]
images = numpy.empty(len(onlyfiles), dtype=object)
# Iterate through every image
# and resize all the images.
for n in range(0, len(onlyfiles)):
path = join(mypath, onlyfiles[n])
images[n] = cv2.imread(join(mypath, onlyfiles[n]),
cv2.IMREAD_UNCHANGED)
# Load the image in img variable
img = cv2.imread(path, 1)
# Define a resizing Scale
# To declare how much to resize
resize_scaling = 50
resize_width = int(img.shape[1] * resize_scaling/100)
resize_hieght = int(img.shape[0] * resize_scaling/100)
resized_dimensions = (resize_width, resize_hieght)
# Create resized image using the calculated dimensions
resized_image = cv2.resize(img, resized_dimensions,
interpolation=cv2.INTER_AREA)
# Save the image in Output Folder
cv2.imwrite(
'output/' + str(resize_width) + str(resize_hieght) + str(n) + '_resized.jpg', resized_image)
print("Images resized Successfully")
在保存此Python脚本的文件夹中打开终端并键入以下命令。
python resize.py --image path/to/images/folder/
输出: