Добро пожаловать в учебник по компьютерному зрению. Цель этой серии статей - дать краткий обзор области обработки изображений и компьютерного зрения с использованием Python и библиотеки OpenCV.

Что такое компьютерное зрение?

Компьютерное зрение - это передовая область компьютерных наук, которая помогает компьютеру понимать изображения. Его также называют подмножеством искусственного интеллекта. Компьютерное зрение часто ошибочно принимают за обработку изображений, однако обработка изображений является частью компьютерного зрения, которое решает некоторые основные задачи, такие как размытие, резкость, контраст, растяжение и т. Д., В то время как компьютерное зрение используется для извлечения функций из изображения.

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

Изображение - это двухмерное представление объекта. В контексте обработки сигналов изображение - это распределенная амплитуда цветов видимого спектра света.

Как компьютеры хранят изображение?

Компьютеры в основном сохраняли значение RGB пикселя изображения. Координаты пикселей в основном представлены (x, y), как в декартовой системе координат, или (r, c), как в матричной записи. Где значение пикселя находится в диапазоне от [0–255] ], здесь ноль означает более темные пиксели (черные), а максимальное значение 255 - более яркие пиксели (белые).

Для цветового пространства RGB оно представлено (x, y, c), где c представляет каналы R, G, B.

В отличие от традиционной системы координат в компьютерном зрении, пиксельный пиксель начинается с верхнего левого угла, то есть (0,0) пикселя изображения, в то время как последний пиксель будет (x, y)

Пиксели могут храниться как в главной строке, так и в главном столбце.

Итак, давайте начнем с нашего первого кода… ..

Чтение, запись и отображение нашего изображения

  1. cv2.imread («полный путь к изображению», флаг) Первый аргумент - это полный путь к изображению вместе с расширением. Второй аргумент - это необязательный флаг, который вы узнаете на следующем сеансе.

2. Используйте функцию cv2.imshow () для отображения изображения в окне. Окно автоматически подгоняется под размер изображения. Первый аргумент - это имя окна, которое представляет собой строку. Второй аргумент - это наш имидж. Вы можете создать столько окон, сколько захотите, но с разными именами окон.

3. cv2.waitKey () - это функция привязки клавиатуры. Его аргумент - время в миллисекундах. Функция ожидает в течение указанных миллисекунд для любого события клавиатуры. Если в это время вы нажмете любую клавишу, программа продолжится. Если передан 0, он ждет нажатия клавиши бесконечно. Его также можно настроить на обнаружение определенных нажатий клавиш, например, нажатие клавиши a и т. Д., Которые мы обсудим ниже.

4. cv2.destroyAllWindows () просто уничтожает все окна, которые мы создали. Если вы хотите уничтожить какое-либо конкретное окно, используйте функцию cv.destroyWindow (), где вы передаете точное имя окна в качестве аргумента.

Написание изображения

Использование функции cv2.write () сохраняет изображение в указанный файл. Первый аргумент - это путь к месту назначения в файловой системе, где должно быть сохранено изображение. Второй аргумент - ndarray, содержащий изображение. Возвращает True, если изображение записано в файловую систему, иначе - False.

In python the numbering starts from zero 
Hence int(image.shape[0]) returns the first argument height,
while int(image.shape[1]) returns the second argument width
and int(image.shape[2]) returns the number of layers for RGB image we know that there are three layers 

while for grayscale image it has only 1 layer