Maison > développement back-end > Tutoriel Python > Comment recadrer des images dans OpenCV à l'aide de Python : Numpy Slicing vs getRectSubPix ?

Comment recadrer des images dans OpenCV à l'aide de Python : Numpy Slicing vs getRectSubPix ?

Susan Sarandon
Libérer: 2024-11-30 18:12:17
original
652 Les gens l'ont consulté

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

Comment recadrer des images dans OpenCV à l'aide de Python

Dans le traitement d'image, le recadrage est une opération fondamentale pour extraire des régions spécifiques d'une image. OpenCV, une bibliothèque de vision par ordinateur populaire en Python, fournit diverses méthodes de recadrage, notamment le découpage numpy et des fonctions telles que getRectSubPix.

Utiliser le découpage numpy pour le recadrage

Le plus simple et L'approche la plus simple pour recadrer des images dans OpenCV consiste à utiliser le découpage numpy. Les tableaux Numpy représentent des images dans OpenCV et vous pouvez accéder à des régions spécifiques du tableau à l'aide d'opérations de découpage.

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)
Copier après la connexion

Utilisation de getRectSubPix pour le recadrage

Dans certains scénarios, tels que comme lorsqu'un recadrage précis de sous-pixels est requis, la fonction getRectSubPix d'OpenCV peut être utilisée. Il extrait une partie rectangulaire de l'image tout en interpolant les valeurs des pixels.

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)
Copier après la connexion

Exemple de code (PIL vs. OpenCV)

Pour illustrer la différence entre PIL et OpenCV, créons un exemple similaire à celui fourni dans le question.

PIL :

import PIL.Image as Image

im = Image.open('0.png').convert('L')
im = im.crop((1, 1, 98, 33))
im.save('_0.png')
Copier après la connexion

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)
Copier après la connexion

Dans cet exemple, OpenCV utilise le découpage numpy pour recadrer l'image spécifiée par les coordonnées (1, 1, 98, 33). L'image recadrée résultante est enregistrée sous '_0.png.'

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal