Στην Python υπάρχουν αρκετές βιβλιοθήκες για το χειρισμό εικόνων, όπως η OpenCV και η Pillow (PIL). Αυτή η ενότητα εξηγεί πώς να λάβετε το μέγεθος της εικόνας (πλάτος και ύψος) για κάθε μία από αυτές.
Μπορείτε να λάβετε το μέγεθος της εικόνας (πλάτος και ύψος) ως πλειάδα χρησιμοποιώντας το shape για το OpenCV και το size για το Pillow (PIL), αλλά σημειώστε ότι η σειρά του καθενός είναι διαφορετική.
Οι ακόλουθες πληροφορίες παρέχονται εδώ.
- OpenCV
ndarray.shape
:Λήψη του μεγέθους της εικόνας (πλάτος, ύψος)- Για έγχρωμες εικόνες
- Για εικόνες κλίμακας του γκρι (μονόχρωμες)
- Pillow(PIL)
size
,width
,height
:Λήψη του μεγέθους της εικόνας (πλάτος, ύψος)
Ανατρέξτε στο ακόλουθο άρθρο για το πώς μπορείτε να λάβετε το μέγεθος (χωρητικότητα) ενός αρχείου αντί για το μέγεθος της εικόνας (μέγεθος).
OpenCV: ndarray.shape: Λήψη του μεγέθους της εικόνας (πλάτος, ύψος)
Όταν ένα αρχείο εικόνας φορτώνεται στο OpenCV, αντιμετωπίζεται ως πίνακας NumPy ndarray και το μέγεθος της εικόνας (πλάτος και ύψος) μπορεί να ληφθεί από το χαρακτηριστικό shape, το οποίο υποδεικνύει το σχήμα του πίνακα ndarray.
Όχι μόνο στο OpenCV, αλλά και όταν ένα αρχείο εικόνας φορτώνεται στο Pillow και μετατρέπεται σε ndarray, το μέγεθος της εικόνας που αναπαρίσταται από το ndarray λαμβάνεται χρησιμοποιώντας το shape.
Για έγχρωμες εικόνες
Στην περίπτωση των έγχρωμων εικόνων, χρησιμοποιείται ο ακόλουθος τρισδιάστατος πίνακας ndarray.
- Σειρά (ύψος)
- Σειρά (πλάτος)
- Χρώμα (3)
shape είναι μια πλειάδα των παραπάνω στοιχείων.
import cv2 im = cv2.imread('data/src/lena.jpg') print(type(im)) # <class 'numpy.ndarray'> print(im.shape) print(type(im.shape)) # (225, 400, 3) # <class 'tuple'>
Για να αναθέσετε κάθε τιμή σε μια μεταβλητή, αποσυσκευάστε την πλειάδα ως εξής.
h, w, c = im.shape print('width: ', w) print('height: ', h) print('channel:', c) # width: 400 # height: 225 # channel: 3
_
Κατά την αποσυσκευασία μιας πλειάδας, τα παραπάνω μπορούν συμβατικά να εκχωρηθούν ως μεταβλητή για τιμές που δεν θα χρησιμοποιηθούν στη συνέχεια. Για παράδειγμα, εάν ο αριθμός των χρωμάτων (αριθμός καναλιών) δεν χρησιμοποιείται, χρησιμοποιείται το ακόλουθο.
h, w, _ = im.shape print('width: ', w) print('height:', h) # width: 400 # height: 225
Μπορεί επίσης να χρησιμοποιηθεί ως έχει, προσδιορίζοντάς το με δείκτη (index) χωρίς να το αναθέσετε σε μια μεταβλητή.
print('width: ', im.shape[1]) print('height:', im.shape[0]) # width: 400 # height: 225
(width, height)
Αν θέλετε να πάρετε αυτή την πλειάδα, μπορείτε να χρησιμοποιήσετε το slice και να γράψετε τα εξής: cv2.resize(), κ.λπ. Αν θέλετε να καθορίσετε το όρισμα με βάση το μέγεθος, χρησιμοποιήστε αυτό.
print(im.shape[1::-1]) # (400, 225)
Για εικόνες κλίμακας του γκρι (μονόχρωμες)
Στην περίπτωση εικόνων σε κλίμακα του γκρι (μονόχρωμες), χρησιμοποιείται η ακόλουθη δισδιάστατη σειρά ndar.
- Σειρά (ύψος)
- Σειρά (πλάτος)
Το σχήμα θα είναι αυτή η πλειάδα.
im_gray = cv2.imread('data/src/lena.jpg', cv2.IMREAD_GRAYSCALE) print(im_gray.shape) print(type(im_gray.shape)) # (225, 400) # <class 'tuple'>
Βασικά το ίδιο με τις έγχρωμες εικόνες.
h, w = im_gray.shape print('width: ', w) print('height:', h) # width: 400 # height: 225 print('width: ', im_gray.shape[1]) print('height:', im_gray.shape[0]) # width: 400 # height: 225
Αν θέλετε να εκχωρήσετε το πλάτος και το ύψος σε μεταβλητές, μπορείτε να το κάνετε ως εξής, είτε η εικόνα είναι έγχρωμη είτε σε κλίμακα του γκρι.
h, w = im.shape[0], im.shape[1] print('width: ', w) print('height:', h) # width: 400 # height: 225
(width, height)
Αν θέλετε να πάρετε αυτή την πλειάδα, μπορείτε να χρησιμοποιήσετε τις φέτες και να την γράψετε ως εξής. Το ακόλουθο στυλ γραφής μπορεί να χρησιμοποιηθεί είτε η εικόνα είναι έγχρωμη είτε σε κλίμακα του γκρι.
print(im_gray.shape[::-1]) print(im_gray.shape[1::-1]) # (400, 225) # (400, 225)
Pillow(PIL): size, width, height: Λήψη του μεγέθους της εικόνας (πλάτος, ύψος)
Το αντικείμενο εικόνας που λαμβάνεται από την ανάγνωση μιας εικόνας με το Pillow(PIL) έχει τα ακόλουθα χαρακτηριστικά.
size
width
height
Το μέγεθος είναι η ακόλουθη πλειάδα.(width, height)
from PIL import Image im = Image.open('data/src/lena.jpg') print(im.size) print(type(im.size)) # (400, 225) # <class 'tuple'> w, h = im.size print('width: ', w) print('height:', h) # width: 400 # height: 225
Μπορείτε επίσης να λάβετε το πλάτος και το ύψος αντίστοιχα ως χαρακτηριστικά.width
, height
print('width: ', im.width) print('height:', im.height) # width: 400 # height: 225
Το ίδιο ισχύει και για τις εικόνες κλίμακας του γκρι (μονόχρωμες).
im_gray = Image.open('data/src/lena.jpg').convert('L') print(im.size) print('width: ', im.width) print('height:', im.height) # (400, 225) # width: 400 # height: 225