Создание изображения
Начнём с создания собственного изображения — чёрного полотна для последующего рисования фигур и текста. Для этого создадим матрицу: список списков, где значения элементов определяют изображение: нули — чёрный цвет, единицы — белый.
Использование NumPy
Для эффективной генерации матрицы воспользуемся библиотекой NumPy:
import numpy as np
Создадим переменную photo и используем метод np.zeros:
photo = np.zeros((300, 300, 3), dtype=np.uint8)
Это создаёт матрицу 300×300 с тремя каналами (для цветовой обработки) и типом данных np.uint8 (целые числа от 0 до 255). Выведем изображение:
import cv2
cv2.imshow('Image', photo)
cv2.waitKey(0)
cv2.destroyAllWindows()
Полученное изображение имеет размер 300×300 пикселей, соответствующий размеру матрицы. Изменение размеров достигается изменением параметров в np.zeros. Например, np.zeros((450, 450, 3), dtype=np.uint8) создаст изображение 450×450 пикселей.
Окрашивание изображения
Так как изображение имеет 3 канала, его можно окрасить. Воспользуемся индексами и срезами матрицы:
photo[:] = [255, 0, 0] # Красный цвет
photo[:] обращается ко всем элементам. [255, 0, 0] устанавливает красный цвет (в формате BGR: синий, зелёный, красный). Аналогично устанавливаются другие цвета, например, синий ([0, 0, 255]) или зелёный ([0, 255, 0]). Для выбора цвета можно использовать инструмент выбора цвета (color picker) в Google. Важно помнить о порядке цветов в формате BGR.
Закрашивание части изображения
Для закрашивания части изображения используем срезы с указанием отступов:
photo[100:150, 200:280] = [0, 255, 0] # Зелёный прямоугольник
Это закрасит прямоугольник с координатами (100, 200) — (150, 280) зелёным цветом.
Рисование фигур
OpenCV предоставляет функции для рисования различных фигур.
Квадрат
Функция cv2.rectangle рисует квадрат:
cv2.rectangle(photo, (0, 0), (100, 100), (0, 0, 255), 3) # Синий квадрат с толщиной линии 3 пикселя
Первый параметр — изображение, второй — верхний левый угол, третий — нижний правый угол, четвёртый — цвет, пятый — толщина линии. cv2.fillPoly заполняет квадрат цветом.
Линия
Функция cv2.line рисует линию:
cv2.line(photo, (0, int(photo.shape[0]/2)), (100, int(photo.shape[0]/2)), (255, 255, 0), 3)
Первый параметр — изображение, второй — начальная точка, третий — конечная точка, четвёртый — цвет, пятый — толщина.
Круг
Функция cv2.circle рисует круг:
cv2.circle(photo, (int(photo.shape[1]/2), int(photo.shape[0]/2)), 50, (255, 0, 255), -1)
Первый параметр — изображение, второй — центр круга, третий — радиус, четвёртый — цвет, пятый — толщина (-1 для заполненного круга).
Вывод текста
Функция cv2.putText выводит текст:
cv2.putText(photo, 'ITProger', (100, 150), cv2.FONT_HERSHEY_TRIPLEX, 1, (255, 255, 255), 3)
Первый параметр — изображение, второй — текст, третий — координаты, четвёртый — шрифт, пятый — масштаб, шестой — цвет, седьмой — толщина.
Эти функции часто используются для выделения и подписи объектов на изображениях.
В этом уроке мы изучили создание и обработку изображений в OpenCV, рисование фигур и вывод текста. Эти навыки необходимы для работы с компьютерным зрением и распознаванием объектов.