Пост

Работа с изображениями с помощью OpenCV

OpenCV предоставляет мощный API для работы с изображениями на Python. В этом разделе рассматриваются основные операции: чтение, отображение и сохранение изображений с использованием библиотеки OpenCV и массивов NumPy.

Работа с изображениями с помощью OpenCV

Введение

OpenCV предоставляет мощный API для работы с изображениями на Python. В этом разделе рассматриваются основные операции: чтение, отображение и сохранение изображений с использованием библиотеки OpenCV и массивов NumPy.

Импорт библиотеки OpenCV

Для начала работы с OpenCV необходимо импортировать библиотеку:

1
import cv2

Чтение изображений с диска

Функция cv2.imread() загружает изображение в виде массива NumPy. Принимает два аргумента: путь к файлу и флаг режима чтения:

1
2
3
4
5
# Чтение изображения в цветном режиме
img = cv2.imread('/home/pi/dataset/image.tiff', cv2.IMREAD_COLOR)

# Альтернативная запись с числовым флагом
img = cv2.imread('/home/pi/dataset/image.tiff', 1)

Флаги режимов чтения изображений

  • cv2.IMREAD_COLOR (1) - чтение в цветном режиме (по умолчанию)
  • cv2.IMREAD_GRAYSCALE (0) - чтение в оттенках серого
  • cv2.IMREAD_UNCHANGED (-1) - чтение изображения как есть

Отображение изображений

Для отображения изображений используются функции cv2.imshow(), cv2.waitKey() и cv2.destroyWindow():

1
2
3
4
5
6
7
8
# Отображение изображения в окне
cv2.imshow('Stormtrooper', img)

# Ожидание нажатия клавиши
cv2.waitKey(0)

# Закрытие окна
cv2.destroyWindow('Stormtrooper')

Создание окон заранее

Можно предварительно создать окно с определенными параметрами:

1
2
# Создание окна с автоматическим размером
cv2.namedWindow('Lena', cv2.WINDOW_AUTOSIZE)

Полный пример чтения и отображения

1
2
3
4
5
6
7
8
9
import cv2

# Чтение изображения
img = cv2.imread('/home/pi/dataset/4.2.03.tiff', 1)

# Отображение
cv2.imshow('Stormtrooper', img)
cv2.waitKey(0)
cv2.destroyWindow('Stormtrooper')

Окно с отображенным изображением в OpenCV

Сохранение изображений

Функция cv2.imwrite() сохраняет массив NumPy как изображение:

1
2
# Сохранение изображения
cv2.imwrite('output.jpg', img)

Обработка нажатий клавиш

Функция cv2.waitKey() может использоваться для обработки различных нажатий клавиш:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import cv2

img = cv2.imread('/home/pi/dataset/4.2.03.tiff', 1)
cv2.imshow('Stormtrooper', img)

keyPress = cv2.waitKey(0)

if keyPress == ord('q'):
    # Закрытие при нажатии 'q'
    cv2.destroyWindow('Stormtrooper')
elif keyPress == ord('s'):
    # Сохранение при нажатии 's'
    cv2.imwrite('test.jpg', img)
    cv2.destroyWindow('Stormtrooper')

Типичные проблемы и решения

Проблема: Ошибка при чтении файла Решение: Проверьте путь к файлу и права доступа. Используйте абсолютные пути.

Проблема: Изображение не отображается Решение: Убедитесь, что после cv2.imshow() следует cv2.waitKey(0)

Проблема: Окно не закрывается Решение: Используйте cv2.destroyAllWindows() для гарантированного закрытия всех окон

Проблема: Неправильные цвета при отображении Решение: OpenCV использует BGR вместо RGB. Для правильного отображения конвертируйте: cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

Освоение базовых операций работы с изображениями в OpenCV является фундаментом для более сложных задач компьютерного зрения. Понимание принципов чтения, отображения и сохранения изображений позволяет эффективно работать с визуальными данными и подготавливает к реализации сложных алгоритмов обработки изображений на платформе Raspberry Pi.

Авторский пост защищен лицензией CC BY 4.0 .

© evdokimoff. Некоторые права защищены.

Использует тему Chirpy для Jekyll