Skip to content
Related Articles

Related Articles

Resize Multiple Images using OpenCV-Python

View Discussion
Improve Article
Save Article
  • Difficulty Level : Expert
  • Last Updated : 26 Sep, 2021

In this article, we are going to write a python script using the OpenCV library to Resize Multiple Images and save them as an image file. Resizing the image refers to the growth of the images. Measurement works best in the use of multiple images and in machine learning applications. It helps to reduce the number of pixels from an image and that has several benefits e.g. It can reduce neural network training time as the number of pixels in the image greatly increases the number of input nodes which also improves the model difficulty.

Approach:

  • Firstly, load the required libraries into a Python file (argparse, OpenCV, etc.).
  • We are using argparse() function to get the path of the directory of images on which we need to perform the resizing.
  • Use for loop to iterate every image in the directory.
  • Load image in a variable using cv2.imread() function.
  • Define a resizing scale and set the calculated height and width.
  • Resize the image using cv2.resize() function.
  • Place the output file inside the output folder using cv2.imwrite() function.

All the images inside the Images folder will be resized and will be saved in an output folder.

Below is the implementation:

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")

Open the terminal in the folder where this Python Script is saved and type the below command.

python resize.py --image path/to/images/folder/

Output:


My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!