How to Scale an Image with OpenCV

Step by Step guide to scaling an image with OpenCV

Updated March 19, 2023


Hey! If you love Computer Vision and AI, let's connect on Twitter or LinkedIn. I talk about this stuff all the time!

As a beginner in computer vision, one of the fundamental skills you need to master is the ability to scale your images. Scaling images allows you to resize them to a different resolution while maintaining their aspect ratio. In this OpenCV tutorial, we’ll explore the basics of image scaling and walk through several code examples to make sure you get it right.

Before we dive into scaling, let’s take a moment to understand what we’re dealing with. Images are composed of pixels, and pixels are essentially the smallest unit of photographic data. When we talk about the resolution of an image, we’re referring to the number of pixels its width and height consist of.

What is Scaling an Image?

Scaling an image essentially means manipulating these pixels to create either a larger or a smaller version of the original image. In OpenCV, we can do this using the resize() function.

Here’s a basic code example that shows how resize() works:

import cv2

# Load an image
img = cv2.imread('original_image.jpg')

# Resize the image using OpenCV
resized_img = cv2.resize(img, (500, 500))

# Display the resized image
cv2.imshow('Resized Image', resized_img)
cv2.waitKey(0)

The resize() function takes two parameters: the original image and the target size of the new image. In the above example, we’ve resized the original image to 500x500 pixels.

But what if we want to scale an image based on a percentage increase or decrease? We can do this by multiplying the width and height of the original image by a scale factor.

Here’s how the code would look for scaling an image by 50%:

import cv2

# Load an image
img = cv2.imread('original_image.jpg')

# Get the original size of the image
height, width, channels = img.shape

# Scale the width and height by 50%
new_width = int(width * 0.5)
new_height = int(height * 0.5)

# Resize the image using OpenCV
resized_img = cv2.resize(img, (new_width, new_height))

# Display the resized image
cv2.imshow('Resized Image', resized_img)
cv2.waitKey(0)

As you can see, we first calculate the new width and height by multiplying the original values by our desired scale factor. We then pass these new dimensions to the resize() function to get the scaled image.

In addition to these basic examples, there are several other advanced techniques you can use to scale images in OpenCV. For instance, you can use interpolation methods like INTER_NEAREST, INTER_LINEAR, INTER_CUBIC, or INTER_LANCZOS4 to improve the quality of your scaled images.

Whether you’re working on a computer vision project or simply resizing images for your blog, it’s important to master the basics of scaling images using OpenCV. By understanding the theory of how it works and experimenting with different code examples, you’ll be well on your way to becoming an expert in this essential computer vision skill.