Bildgröße ändern in Python

Manav Narula 30 Januar 2023
  1. Verwenden des OpenCV-Moduls zur Größenänderung von Bildern in Python
  2. Verwenden Sie das Scikit-Image-Modul, um die Größe von Bildern in Python zu ändern
  3. Erstellen Sie eine benutzerdefinierte Funktion, um die Größe von Bildern in Python zu ändern
Bildgröße ändern in Python

In diesem Tutorial wird erläutert, wie Sie die Größe eines Bildes ändern können.

Im Wesentlichen werden wir die Größe des NumPy-Arrays ändern, das ein Bild darstellt. Es gibt keine direkte Funktionalität im NumPy-Modul, um dies zu erreichen. Wir können die Funktion resize() nicht direkt verwenden, da sie die Achse ignoriert und keine Interpolation oder Extrapolation anwendet.

Beachten Sie, dass wir nach dem Ändern der Größe dieses Array mit geänderter Größe exportieren und als Bild speichern können. Dies gilt für alle unten diskutierten Methoden

Verwenden des OpenCV-Moduls zur Größenänderung von Bildern in Python

Das OpenCV-Modul wird in Python häufig für die Bildverarbeitung und Computer Vision verwendet. Um die Größe eines Bildes zu ändern, lesen wir zuerst das Bild mit der Funktion imread() und ändern die Größe mit der Funktion resize() wie unten gezeigt.

import cv2
import numpy as np

img = cv2.imread("filename.jpeg")
res = cv2.resize(img, dsize=(54, 140), interpolation=cv2.INTER_CUBIC)

Das imread() gibt ein Array zurück, in dem das Bild gespeichert ist. Wir ändern die Größe mit der Funktion resize(). Ein wichtiger Aspekt hierbei ist der Parameter interpolation, der im Wesentlichen angibt, wie die Größe eines Bildes geändert werden soll. Es gibt verschiedene Möglichkeiten, die Größe des Bildes zu ändern, z. B. INTER_NEAREST, INTER_LINEAR und mehr. Es gibt keine beste Möglichkeit, diesen Parameter auszuwählen. es unterscheidet sich von Situation zu Situation.

Verwenden Sie das Scikit-Image-Modul, um die Größe von Bildern in Python zu ändern

Dieses Modul basiert auf der NumPy-Bibliothek und verfügt über die Funktion resize(), mit der die Größe von Bildern effektiv geändert werden kann. Es kann auf einer Vielzahl von Kanälen arbeiten und sich gleichzeitig um Interpolation, Anti-Aliasing usw. kümmern.

Der folgende Code zeigt, wie diese Funktion verwendet wird.

from skimage.transform import resize
import matplotlib.pyplot as plt

im = plt.imread("filename.jpeg")
res = resize(im, (140, 54))

Beachten Sie, dass wir die Funktion matplotlib.pyplot.imread() verwenden, um das Bild in der obigen Methode zu lesen. Es kann durch eine beliebige Methode Ihrer Wahl ersetzt werden.

Erstellen Sie eine benutzerdefinierte Funktion, um die Größe von Bildern in Python zu ändern

Wir können auch unsere eigene Funktion erstellen, um die Größe in Python zu ändern. Es sollte beachtet werden, dass diese Methode eine grundlegende Größenänderungsfunktion ist, unabhängig von Bibliotheken, und keine Interpolation und kein Anti-Aliasing durchführt, wie dies bei den obigen Methoden der Fall ist.

Der folgende Code demonstriert diese Funktion.

import matplotlib.pyplot as plt


def scale(im, nR, nC):
    number_rows = len(im)  # source number of rows
    number_columns = len(im[0])  # source number of columns
    return [
        [im[int(number_rows * r / nR)][int(number_columns * c / nC)] for c in range(nC)]
        for r in range(nR)
    ]


im = plt.imread("filename.jpeg")
res = scale(im, 30, 30)
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Verwandter Artikel - Python Image