[Обработка компьютерного зрения 1] Введение в OpenCV

искусственный интеллект задняя часть

Это первый день моего участия в августовском испытании обновлений, подробности о мероприятии:Испытание августовского обновления

Начало работы с OpenCV

Автор: Зак Сок

1. Что такое OpenCV?

OpenCV — это кроссплатформенная библиотека компьютерного зрения и машинного обучения с открытым исходным кодом, полное название — Open Source Computer Vision Library. Открытый исходный код корпорации Intel. Код основной библиотеки написан корпорацией Intel на C/C++, а часть кода предоставленной библиотеки предоставлена ​​программистами из сообщества.

OpenCV не только поддерживает несколько платформ, но также предоставляет интерфейсы на нескольких языках, включая Java, Python, Ruby и т. д. Язык Python, используемый в этом курсе.

Для получения подробной информации вы можете проверить официальный сайт OpenCV: [OpenCV.org/][https://о…

2. Что может OpenCV?

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

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

(1) Обнаружение края

Существует множество алгоритмов обнаружения краев, среди которых алгоритм Кэнни является текущим оптимальным алгоритмом.На следующем рисунке показано обнаружение краев, реализованное алгоритмом Кэнни:

在这里插入图片描述

Видно, что края телефона отображаются полностью. Canny также хорошо подходит для портретов или других сложных изображений.Ниже приведена карта обнаружения краев портрета:

在这里插入图片描述

(2) Распознавание лиц

Файл функции лица предоставляется на официальном сайте OpenCV, Мы можем использовать каскадный классификатор Хаара, чтобы быстро реализовать операцию обнаружения лица. Ниже приведено обнаружение лица, реализованное OpenCV:

在这里插入图片描述

Эффект обнаружения довольно хороший.

(3) Эрозия изображения

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

在这里插入图片描述

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

3. Установите OpenCV в Python

Использовать OpenCV в Python очень просто, нам просто нужно установить модуль с помощью pip, инструкция выглядит следующим образом:

pip install opencv-python

Приведенная выше установка является основной библиотекой OpenCV, предоставляемой Intel. Мы можем установить библиотеку вклада с помощью следующего оператора:

pip install opencv-contrib-python

Неустановка добавленной библиотеки не влияет на наши основные функции использования основной библиотеки.

В файле Python мы импортируем OpenCV со следующим оператором:

import cv2

После импорта мы можем использовать его.

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

Формат функции для чтения изображения следующий:

retval = cv2.imread(filename, flags=None)
  • retval: возвращаемый объект изображения (тип numpy.ndarray) или None, если чтение не удалось.

  • имя файла: имя файла, которое является обязательным параметром.

  • flags: флаги чтения, используемые для управления типом читаемого файла, мы можем не передавать ему значение.

На данном этапе мы можем просто понимать retval как объект изображения. Что касается часто используемых значений флагов, смотрите следующую таблицу:

ценность значение
cv2.IMREAD_UNCHANGED Формат не меняется
cv2.IMREAD_GRAYSCALE Оттенки серого
cv2.IMREAD_COLOR 3-канальная карта BGR, значение флагов по умолчанию

Пока что нам не нужно понимать значение каждого параметра, и мы не будем использовать параметр flags на данном этапе. Ниже мы используем функцию imread для чтения изображения:

import cv2
retval = cv2.imread('im.jpg')

Выше приведена операция чтения изображения.

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

Чтение изображения является самой основной операцией.Последующие операции с изображением должны сначала получить объект изображения, такой как отображаемое изображение, которое будет описано далее.

Операция отображения картинок обычно сопровождается ожиданием и уничтожением, поэтому вы можете не понять, давайте посмотрим на код отображения картинок:

import cv2
im = cv2.imread('im.jpg')
# 显示图片
cv2.imshow(im, 'im')
cv2.waitKey(0)
cv2.destroyAllWindows()

Основной функцией выше является функция imshow, и ее формат функции выглядит следующим образом:

imshow(winname, mat)

Параметры объясняются следующим образом:

  • winname: имя окна, в котором отображается картинка
  • mat: объект изображения, который является объектом изображения, полученным с помощью imread.

Мы можем вызвать функцию imshow для отображения изображения, но функция imshow покажет нам только мгновение. Эффект, который мы видим, — это мигающее окно, поэтому нам нужно сотрудничать с нашей функцией waitKey. Формат функции waitKey следующий:

key = waitKey(delay=None)

Его роль состоит в том, чтобы ждать ввода пользователя, он возвращает значение клавиатуры ASCII. С помощью функции waitKey мы можем заставить окно отображаться.

Функция, в которой параметр задержки — это количество миллисекунд ожидания. Мы можем выбрать не давать или давать 0, что означает ждать.

Что касается функции destroyAllWindows, то это обычная операция, так как OpenCV написан на C/C++, поэтому нам нужно вручную освобождать память окна.