Рубрики
Без рубрики

Python Opencv Читать изображение – CV2 IMREAD ()

Автор оригинала: Python Examples.

OPENCV CV2 IMREAD ()

Вы можете прочитать изображение в Numpy Array с использованием библиотеки OpenCV. Массив содержит данные уровня пикселей. А согласно требованию, вы можете изменить данные изображения на уровне пикселей, обновляя значения массива.

Чтобы прочитать изображение в Python с помощью OpenCV, используйте функцию CV2.imread (). IMREAD () Возвращает 2D или 3D Matrix на основе количества цветных каналов, присутствующих на изображении. Для бинарного или серого изображения масштабируется, 2D Array достаточно. Но для цветного изображения вам нужен 3D-массив.

В этом руководстве мы подробно учимся, как прочитать изображение с использованием OpenCV, рассмотрев некоторые из обычных сценариев.

Мы также узнаем порядок, в котором функция IMREAD () декодирует цветные каналы из изображения и как IMREAD () обрабатывает разные расширения изображения.

Синтаксис CV2.imread ()

Синтаксис функции CV2.IMREAD () приведен ниже.

cv2.imread(/path/to/image, flag)

где /путь/к/изображение должен быть полный абсолютный путь к изображению. Флаг Необязательно и одно из следующих возможных значений могут быть переданы для флага.

  • cv2.imread_color Читает изображение с цветами RGB, но без канала прозрачности. Это значение по умолчанию для флага при отсутствии значения в качестве второго аргумента для CV2.IMREAD ().
  • CV2.IMREAD_GRAYSHALE Читает изображение как серое изображение. Если исходное изображение является цветным изображением, серая стоимость каждого пикселя рассчитывается путем получения среднего цвета цветных каналов и читается в массив.
  • cv2.imread_unchanged Читает изображение как от источника. Если исходное изображение является RGB, он загружает изображение в массив с красными, зелеными и синими каналами. Если исходное изображение представляет собой ARGB, он загружает изображение с тремя цветовыми компонентами наряду с альфа-каналом или прозрачностью.

Пример 1: OpenCV CV2 Читайте цветное изображение

В этом примере мы будем читать цветное изображение. Как значение по умолчанию Флаг Аргумент – это cv2.imread_color Мы не передаем флаг явно.

Python Program

import cv2
#read image
img = cv2.imread('D:/image-1.png')
#print its shape
print('Image Dimensions :', img.shape)

Выход

Запустите вышеуказанную программу Python, и вы получите следующий вывод.

Image Dimensions : (400, 640, 3)

img.shape Возвращает кортеж представление (высота, ширина, число_of_channels). Высота изображения составляет 400 пикселей, ширина составляет 640, и на изображении есть три цветных канала. Для CV2.IMREAD_COLOR, канал прозрачности игнорируется даже если присутствует.

Пример 2: OpenCV CV2 – Чтение изображения как серая шкала

В этом примере мы будем читать изображение как изображение серого масштаба. Вход можно цветное изображение или изображение серого масштаба. Но, если аргумент флага составляет CV2.IMREAD_GRAYSHALE Изображение читается как изображение серого масштаба.

Python Program

import cv2
 
img = cv2.imread('D:/image-1.png', cv2.IMREAD_GRAYSCALE)
 
print('Image Dimensions :', img.shape)

Выход

Image Dimensions : (400, 640)

Высота изображения составляет 400 пикселей, ширина составляет 640. Каждый элемент в массиве представляет собой значение серого масштаба в соответствующем пикселе.

Пример 3: OpenCV CV2 – Чтение изображения с каналом прозрачности

В этом примере мы будем читать изображение с каналом прозрачности. Если на изображении находится канал прозрачности, то мы можем пройти CV2.imread_unchanged, чтобы прочитать канал прозрачности вместе с цветными каналами.

Python Program

import cv2
 
img = cv2.imread('D:/image-1.png', cv2.IMREAD_UNCHANGED)
 
print('Image Dimensions :', img.shape)

Выход

Image Dimensions : (400, 640, 4)

Мы прочитали все четыре канала изображения. А именно красная, зеленая, синяя и прозрачность.

Imread () и цветные каналы

IMREAD () декодирует изображение в матрицу с цветными каналами, хранящимися в порядке B LUE, G Reen, R Эд и А (Прозрачность) соответственно.

Если (400, 640, 4) – это форма изображения, то

  • (:, 0) представляет синий канал
  • (:, 1) представляет зеленый канал
  • (:, 2) представляет красный канал
  • (:, 3) представляет собой канал прозрачности

Imread () и расширения файлов

Существует много расширений, используемых для изображений на основе операционной системы, техники сжатия и т. Д.

Когда IMREAD () метод считывает изображение, он не учитывает расширение имени файла изображения для определения формата изображения. Но решит расширение на основе формата, присутствующего в файловых данных.

IMREAD () поддерживает JPEGS, PNGS и TIFF по всем платформам. Но для сочетания других форматов и операционных систем IMREAD () может рассмотреть кодеки уровня операционной системы. Вы можете направить официальную документацию IMREAD () для этих специальных сценариев.

Резюме

Заключение этого учебника примеров Python мы научились использовать метод CV2 IMREAD () для чтения изображения в массив Python.