Gelöst: Ändern Sie die Größe des Bildes und feuern Sie es in das numpy-Array opencv

Letzte Aktualisierung: 09/11/2023

In der modernen Welt sind Bilder ein wesentlicher Bestandteil von Kommunikation und Technologie. Mit den Fortschritten in künstlicher Intelligenz, maschinellem Lernen und Computer Vision wird es immer wichtiger zu verstehen, wie man Bilder effektiv verarbeitet und manipuliert. Dieser Artikel behandelt ein weit verbreitetes Problem – die Größenänderung von Bildern und deren Einpassung in ein NumPy-Array mit OpenCV, einer beliebten Open-Source-Bibliothek für maschinelles Sehen. Wir werden in die Tiefe gehen, einen systematischen Ansatz bieten, den Code Schritt für Schritt erklären und dabei die beteiligten Bibliotheken und Funktionen sowie ihre Bedeutung für das vorliegende Problem erwähnen.

Einführung

Bilder werden als Matrizen gespeichert, die Pixelintensitäten enthalten. Um effizient mit Bilddaten zu arbeiten, müssen Entwickler oft die Größe eines Bildes ändern, um es gemäß ihren Anforderungen in ein NumPy-Array einzupassen. Eine der besten Bibliotheken, um dies zu erreichen, ist OpenCV, das nahtlos auf verschiedene Bildverarbeitungsanforderungen eingeht. In diesem Artikel zeigen wir, wie Sie die Größe eines Bildes ändern und es mit Python und OpenCV in ein NumPy-Array einfügen.

Erforderliche Bibliotheken importieren

Zunächst müssen wir die erforderlichen Bibliotheken in unsere Python-Umgebung importieren.

import cv2
import numpy as np
  • CV2: Die OpenCV-Bibliothek, die für Bildverarbeitungsaufgaben verwendet wird.
  • Numpy: Die NumPy-Bibliothek bietet Unterstützung für die effektive Arbeit mit Arrays und Matrizen.

Laden und Ändern der Größe des Bildes

Zuerst müssen wir das Bild laden und dann die Größe mit der OpenCV-Funktion ändern cv2.resize():

# Load the image
image = cv2.imread('path/to/image.jpg')

# Define the new size (width, height)
new_size = (300, 300)

# Resize the image
resized_image = cv2.resize(image, new_size, interpolation=cv2.INTER_AREA)
  • cv2.imread(): Diese Funktion liest ein Bild aus dem angegebenen Dateipfad.
  • neue_größe: Ein Tupel, das die gewünschte Breite und Höhe des in der Größe geänderten Bildes enthält. In diesem Fall möchten wir die Größe auf 300 × 300 Pixel ändern.
  • cv2.resize(): Die Größe des Bildes wird mithilfe einer angegebenen Interpolationsmethode auf die angegebenen Abmessungen geändert.

Einpassen des in der Größe geänderten Bildes in ein NumPy-Array

Sobald die Größe des Bildes geändert wurde, müssen wir es in ein NumPy-Array einfügen:

# Create a NumPy array with the desired dimensions (width, height, channels)
array_shape = (300, 300, 3)

# Fit the resized image into the NumPy array
numpy_image = np.zeros(array_shape, dtype=np.uint8)
numpy_image[:resized_image.shape[0], :resized_image.shape[1]] = resized_image
  • array_shape: Ein Tupel, das die gewünschten Dimensionen für das NumPy-Array enthält. Es muss dieselbe Breite, Höhe und Anzahl von Kanälen haben wie unser verkleinertes Bild.
  • np.zeros(): Diese Funktion erstellt ein leeres NumPy-Array mit den angegebenen Dimensionen und dem angegebenen Datentyp.
  • Typ: Es definiert den Datentyp des NumPy-Arrays. np.uint8 stellt eine 8-Bit-Ganzzahl ohne Vorzeichen dar, die häufig für Bilddaten verwendet wird.

Nach Abschluss dieser Schritte wird das Bild nun in der Größe geändert und passt in ein NumPy-Array, bereit für die weitere Verarbeitung.

Zusätzliche OpenCV-Funktionen und -Techniken

Hier sind einige zusätzliche OpenCV-Funktionen und -Techniken im Zusammenhang mit der Größenänderung von Bildern:

  • cv2.INTER_LINEAR: Wird für die Standardinterpolation in verwendet cv2.resize().
  • cv2.INTER_CUBIC: Bietet eine bessere Qualitätsanpassung für die Hochskalierung. Es ist langsamer im Vergleich zu anderen Interpolationsmethoden.
  • cv2.INTER_NEAREST: Schnellste Methode zur Größenänderung. Allerdings verschlechtert sich die Qualität aufgrund der fehlenden Interpolation.
  • Überlegungen zum Seitenverhältnis: Bei der Größenänderung ist es wichtig, das Seitenverhältnis beizubehalten, andernfalls kann das Bild verzerrt werden.

Zusammenfassend haben wir gezeigt, wie Sie die Größe eines Bildes ändern und es mit OpenCV in ein NumPy-Array einfügen. Durch Befolgen der beschriebenen Schritte können Entwickler Bilder effizient für verschiedene Computervisions-, maschinelle Lern- und andere Anwendungen manipulieren.

Zusammenhängende Posts: