Yeah, you can install opencv
(this is a library used for image processing, and computer vision), and use the cv2.resize
function. And for instance use:
import cv2 import numpy as np img = cv2.imread('your_image.jpg') res = cv2.resize(img, dsize=(54, 140), interpolation=cv2.INTER_CUBIC)
Here img
is thus a numpy array containing the original image, whereas res
is a numpy array containing the resized image. An important aspect is the interpolation
parameter: there are several ways how to resize an image. Especially since you scale down the image, and the size of the original image is not a multiple of the size of the resized image. Possible interpolation schemas are:
INTER_NEAREST
– a nearest-neighbor interpolationINTER_LINEAR
– a bilinear interpolation (used by default)INTER_AREA
– resampling using pixel area relation. It may be a preferred method for image decimation, as it gives moire’-free results. But when the image is zoomed, it is similar to theINTER_NEAREST
method.INTER_CUBIC
– a bicubic interpolation over 4×4 pixel neighborhoodINTER_LANCZOS4
– a Lanczos interpolation over 8×8 pixel neighborhood
Like with most options, there is no “best” option in the sense that for every resize schema, there are scenarios where one strategy can be preferred over another.