Heim >Backend-Entwicklung >Python-Tutorial >Wie beschneide ich Bilder in OpenCV mit Python: Numpy Slicing vs. getRectSubPix?

Wie beschneide ich Bilder in OpenCV mit Python: Numpy Slicing vs. getRectSubPix?

Susan Sarandon
Susan SarandonOriginal
2024-11-30 18:12:17736Durchsuche

How to Crop Images in OpenCV Using Python: Numpy Slicing vs. getRectSubPix?

So beschneiden Sie Bilder in OpenCV mit Python

Bei der Bildverarbeitung ist das Zuschneiden ein grundlegender Vorgang, um bestimmte Bereiche aus einem Bild zu extrahieren. OpenCV, eine beliebte Computer-Vision-Bibliothek in Python, bietet verschiedene Methoden zum Zuschneiden, einschließlich Numpy-Slicing und Funktionen wie getRectSubPix.

Numpy-Slicing zum Zuschneiden verwenden

Die einfachste und Der einfachste Ansatz zum Zuschneiden von Bildern in OpenCV ist die Verwendung von Numpy Slicing. Numpy-Arrays stellen Bilder in OpenCV dar, und Sie können mithilfe von Slicing-Vorgängen auf bestimmte Bereiche des Arrays zugreifen.

import cv2

# Read the original image
img = cv2.imread("image.jpg")

# Crop a region using numpy slicing
cropped_img = img[y:y+h, x:x+w]

# Display the cropped image
cv2.imshow('Cropped Image', cropped_img)
cv2.waitKey(0)

Verwenden von getRectSubPix zum Zuschneiden

In bestimmten Szenarien, z Wenn ein präzises Zuschneiden von Subpixeln erforderlich ist, kann die getRectSubPix-Funktion von OpenCV verwendet werden. Es extrahiert einen rechteckigen Teil des Bildes und interpoliert dabei die Pixelwerte.

import cv2

# Read the original image
img = cv2.imread("image.jpg", cv2.IMREAD_GRAYSCALE)

# Crop a region using getRectSubPix
cropped_img = cv2.getRectSubPix(img, (w, h), (x, y))

# Display the cropped image
cv2.imshow('Cropped Image', cropped_img)
cv2.waitKey(0)

Beispielcode (PIL vs. OpenCV)

Um den Unterschied zwischen PIL und zu veranschaulichen OpenCV, erstellen wir ein Beispiel, das dem im bereitgestellten ähnelt Frage.

PIL:

import PIL.Image as Image

im = Image.open('0.png').convert('L')
im = im.crop((1, 1, 98, 33))
im.save('_0.png')

OpenCV:

import cv2

# Read the image
img = cv2.imread('0.png', cv2.IMREAD_GRAYSCALE)

# Crop the image using numpy slicing
cropped_img = img[1:33, 1:98]

# Save the cropped image
cv2.imwrite('_0.png', cropped_img)

In diesem Beispiel verwendet OpenCV Numpy Slicing um das durch die Koordinaten (1, 1, 98, 33) angegebene Bild zuzuschneiden. Das resultierende zugeschnittene Bild wird als „_0.png“ gespeichert.

Das obige ist der detaillierte Inhalt vonWie beschneide ich Bilder in OpenCV mit Python: Numpy Slicing vs. getRectSubPix?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn