Я боюсь, что нет лучшего способа получить этот размер, но это не так уж больно.
Конечно, ваш код должен быть безопасным как для двоичных / моно изображений, так и для нескольких -канальные, но основные размеры изображения всегда на первом месте в форме массива numpy. Если вы выбираете читабельность или не хотите вводить это, вы можете обернуть ее в функцию и дать ей имя, которое вам нравится, например. cv_size
:
import numpy as np
import cv2
# ...
def cv_size(img):
return tuple(img.shape[1::-1])
Если вы используете терминал / ipython, вы также можете выразить его с помощью лямбда:
>>> cv_size = lambda img: tuple(img.shape[1::-1])
>>> cv_size(img)
(640, 480)
Функции записи с def
Первоначально я думал, что использование [:2]
было в порядке, но форма numpy (height, width[, depth])
, и нам нужно (width, height)
, как, например, cv2.resize
ожидает, поэтому - мы должны использовать [1::-1]
. Еще менее запоминающимся, чем [:2]
. А кто помнит обратную резку?