I Ich fürchte, es gibt keinen "besseren" Weg, um diese Größe zu erreichen, aber es ist nicht so viel Schmerz.
Natürlich sollte Ihr Code sowohl für binäre/Monobilder als auch für mehrkanalige Bilder sicher sein, aber die Hauptabmessungen des Bildes kommen immer zuerst in der Form des numpigen Arrays. Wenn Sie sich für die Lesbarkeit entscheiden oder diese nicht eingeben möchten, können Sie sie in eine Funktion einfügen und ihr einen Namen geben, den Sie mögen, z. cv_size
:
import numpy as np
import cv2
# ...
def cv_size(img):
return tuple(img.shape[1::-1])
Wenn Sie auf einem Terminal/ipython sind, können Sie mit einem Lambda-Ausdruck bringen es auch:
>>> cv_size = lambda img: tuple(img.shape[1::-1])
>>> cv_size(img)
(640, 480)
Schreibfunktionen mit def
ist nicht Spaß beim interaktiv arbeiten.
bearbeiten
Ursprünglich dachte ich, dass [:2]
mit war in Ordnung, aber die numpy Form ist (height, width[, depth])
, und wir brauchen (width, height)
, wie z.B. cv2.resize
erwartet, also - wir müssen [1::-1]
verwenden. Noch weniger denkwürdig als [:2]
. Und wer erinnert sich überhaupt an Rückwärtsschneiden?
'numpy.shape' ist nicht aufrufbar. Es ist nur ein einfaches 'Tupel'. Leider kann es entweder 3 oder 2 Elemente lang sein. –