Python opencv2 (cv2) обертка получает размер изображения?
Как получить размер изображения в оболочке cv2 в Python OpenCV (numpy). Есть ли правильный способ сделать это, чем numpy.shape(). Как получить его в формате формата: (ширина, высота)?
Спасибо
Ответ 1
cv2 использует numpy для управления изображениями, поэтому правильный и лучший способ получить размер изображения использует numpy.shape. Предполагая, что вы работаете с изображениями BGR, вот пример:
Если вы работаете с двоичными изображениями, img будет иметь два измерения, и поэтому вы должны изменить код на: height, width = img.shape
Ответ 2
Я боюсь, что нет "лучшего" способа получить этот размер, однако это не так уж больно.
Конечно, ваш код должен быть безопасным как для двоичных/монофонических изображений, так и для многоканальных, но основные размеры изображения всегда будут первыми в форме массива numpy. Если вы выбираете читабельность или не хотите вводить это, вы можете обернуть ее в функцию и дать ей имя, которое вам нравится, например. cv_size:
Функции записи с помощью def не являются приятными при работе в интерактивном режиме.
Edit
Первоначально я думал, что использование [:2] было в порядке, но форма numpy (height, width[, depth]), и нам нужно (width, height), например. cv2.resize ожидает, поэтому - мы должны использовать [1::-1]. Еще менее запоминающимся, чем [:2]. И кто все-таки помнит обратную резку?