Open In App

Resize Multiple Images using OpenCV-Python

Last Updated : 03 Jan, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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:



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads