Модуль Python cv2 использует библиотеку numpy для управления изображениями. Здесь следует отметить одну вещь: я предполагаю, что вы работаете с изображениями BGR.
Размер изображения Python cv2
Чтобы получить правильный размер изображения, используйте свойство numpy.shape. В OpenCV мы можем получить размер изображения(ширину, высоту) в виде кортежа с формой атрибута ndarray.
Чтобы получить размер изображения(width, height) с помощью OpenCV, используйте ndarray.shape. Он работает со следующим типом изображения.
- Для цветного изображения
- Для изображений в градациях серого (монохромных).
Для цветного изображения
Поговорим о цветном изображении. В случае цветного изображения это трехмерный массив строк(height) x столбец(width) x color(3). Таким образом, форма представляет собой кортеж(строка(height), столбец(width), color(3)).
|
1 2 3 4 5 6 7 8 |
# Importing cv2 import cv2 # Path img = cv2.imread('data.jpg') # <class 'numpy.ndarray'> print(img.shape) |
Вывод:
|
1 |
(4000, 3000, 3) |
Вы можете видеть, что мы получаем кортеж, содержащий height, width и color. Мы можем присвоить каждое значение переменной, распаковать кортеж следующим образом.
|
1 2 3 4 5 6 7 8 9 10 11 12 |
# app.py # Importing cv2 import cv2 # Image img = cv2.imread('data.jpg') h, w, c = img.shape print('width: ', w) print('height: ', h) print('channel:', c) |
Вывод:
|
1 2 3 |
width: 3000 height: 4000 channel: 3 |
При распаковке кортежа значения, которые не используются после этого, могут быть назначены _(подчеркивание) по соглашению. См. следующий код.
|
1 2 3 4 5 6 7 8 9 |
# Importing cv2 import cv2 # Image img = cv2.imread('data.jpg') h, w, _ = img.shape print('width: ', w) print('height: ', h) |
Вы также можете использовать индекс для доступа к ширине и высоте переменной img.
|
1 2 3 4 5 6 7 8 |
# Importing cv2 import cv2 # Image img = cv2.imread('data.jpg') print('width: ', img.shape[0]) print('height: ', img.shape[1]) |
Вывод:
|
1 2 |
width: 4000 height: 3000 |
Когда мы сбрасываем размер изображения с помощью метода cv2.resize(), он должен быть(width, height).
Для изображения в градациях серого
Когда вы работаете с изображениями в градациях серого(монохромными), это двумерный массив строк(высота) x столбцов(ширина). Таким образом, форма представляет собой кортеж(строка(height), столбец(width)).
|
1 2 3 4 5 6 7 |
# Importing cv2 import cv2 # Image img = cv2.imread('grayimage.jpg', cv2.IMREAD_GRAYSCALE) print(img.shape) |
Вывод:
|
1 |
(6000, 4000) |
Кортеж распаковки такой же, как и цветное изображение, а также мы можем получить доступ к ширине и высоте изображения, используя индекс.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# Importing cv2 import cv2 # Image img = cv2.imread('grayimage.jpg', cv2.IMREAD_GRAYSCALE) h, w = img.shape print('width: ', w) print('height:', h) # Accessing using index print('Accessing width and height using index') print('width: ', img.shape[1]) print('height:', img.shape[0]) |
Вывод:
|
1 2 3 4 5 |
width: 4000 height: 6000 Accessing width and height using index width: 4000 height: 6000 |

Чтобы получить размер изображения, используйте метод numpy.shape().
