HOWTO · Python

Bildgröße ändern in Python

Dieses Tutorial zeigt, wie Sie die Größe eines Bildes in Python ändern können

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)