Начало работы с изображениями

OpenCVBeginner
Практиковаться сейчас

Введение

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

Импортировать необходимые библиотеки

Сначала импортируем необходимые библиотеки. Для обработки изображений будем использовать библиотеку cv2. Импортируем ее с помощью команды import.

Подготовка

Откройте Python-интерпретатор, введя следующую команду в терминале на рабочем столе ВМ:

python3

Подробности

Введите python3, чтобы запустить интерпретатор Python. Затем введите следующий код:

import cv2

После этого вы сможете использовать библиотеку cv2 в своем коде.

Чтение изображения

Для чтения изображения из файла мы используем функцию cv2.imread(). Эта функция принимает путь к файлу в качестве аргумента и возвращает изображение в виде массива NumPy.

Путь к изображению: /home/labex/Desktop/Image.jpg

Подробности

Введите python, чтобы запустить интерпретатор Python. Затем введите следующий код:

## Чтение изображения
image = cv2.imread('/home/labex/Desktop/Image.jpg')

## Проверка, загружено ли изображение правильно
if image is None:
    print('Error: Image not found.')
else:
    print('Image loaded successfully.')

Примечание

Функция cv2.imread() возвращает None, если изображение не найдено. В этом случае мы выводим сообщение об ошибке. В противном случае выводим сообщение об успехе.

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

Для отображения изображения мы используем функцию cv2.imshow(). Эта функция принимает два аргумента: имя окна и изображение для отображения.

Также мы используем функцию cv2.waitKey() для ожидания нажатия клавиши. Это необходимо, чтобы окно оставалось открытым, пока пользователь не нажмет клавишу. Функция cv2.waitKey() принимает один аргумент, который является количеством миллисекунд для ожидания нажатия клавиши. Если пользователь нажимает клавишу в течение указанного времени, функция возвращает код клавиши. В противном случае возвращается -1. В этом случае мы передаем 0, чтобы ожидать нажатия клавиши бесконечно.
Наконец, мы используем функцию cv2.destroyAllWindows() для закрытия всех окон. Это необязательно, но хорошим тоном считается закрывать все окна перед выходом из программы Python interpreter.

Подробности

Введите python, чтобы запустить интерпретатор Python. Затем введите следующий код:

window_name = 'Image'
## Отображение изображения, изображение было загружено на предыдущих шагах
cv2.imshow(window_name, image)

## Ждать нажатия клавиши и закрыть окно
cv2.waitKey(0)

## Закрыть окно после отображения изображения
cv2.destroyAllWindows()

ЗАМЕТКА

  1. Вы можете изменить window_name для своего кода и посмотреть результат.
  2. Вы можете изменить параметр waitKey для своего кода и посмотреть результат.
  3. Для вашего удобства мы удалили проверку правильности загрузки изображения на этом шаге.
  4. Обратите внимание, что вы используете Python interpreter, поэтому программа не завершается сразу после imshow, но если вы запускаете Python файл, вы должны использовать waitKey, чтобы убедиться, что окно не закрывается после imshow.

Запись изображения в файл

Для сохранения изображения в другом формате мы используем функцию cv2.imwrite(). Функция принимает два аргумента: путь к файлу и изображение для сохранения.

Подробности

Введите python, чтобы запустить интерпретатор Python. Затем введите следующий код:

## Сохранить изображение в другом формате, изображение было загружено на предыдущих шагах
cv2.imwrite('/home/labex/Desktop/Image.png', image)

Примечание

  1. В этом случае мы сохраняем изображение в формате PNG (Image.png). Изображение сохраняется в той же директории (/home/labex/Desktop/), что и Python-скрипт.
  2. Для вашего удобства мы удалили проверку правильности загрузки изображения на этом шаге.

Резюме

Теперь вы знаете основы работы с изображениями с использованием библиотеки OpenCV-Python. Вы можете экспериментировать с разными форматами изображений и изучать более продвинутые операции, такие как изменение размера, обрезка и фильтрация. Удачной разработки!