opencv

Компьютерное зрение основы

Компьютерное зрение основы
Opencv (библиотека компьютерного зрения с открытым исходным кодом) - это модуль Python, используемый для компьютерного зрения. OpenCV - это бесплатный модуль с открытым исходным кодом, который содержит сотни алгоритмов для выполнения различных задач. Все, от распознавания лиц до обнаружения движения, можно сделать с помощью OpenCV. Однако в этом руководстве мы рассмотрим основы OpenCV.

Сначала установим OpenCV:

pip3 установить opencv-python

Читать и показывать изображения

Первое, что нам нужно научиться, - это читать и записывать изображения. Чтение файла изображения, ввод полного пути к файлу или имени файла (если файл находится в папке python) и добавление флага выполняется с помощью cv2.imread (). Флаг может принимать значение 1 (для цветного изображения), 0 (для оттенков серого) или -1 (для цветного изображения с каналами). Можно использовать cv2.функция imshow () для показа изображения; здесь передаются два аргумента - имя изображения и изображение, которое нужно показать. Далее мы используем cv2.функция waitKey () для ожидания ввода с клавиатуры; 0 для cv2.Функция waitKey (0) подразумевает постоянное время ожидания. С другой стороны, cv2.Функция destroyAllWindows () закроет окна.

Это прочитает и откроет изображение и оставит изображение открытым, пока вы его не закроете:

импорт cv2
изображение = cv2.imread ('LinuxLogo.jpg ', 1)
cv2.imshow ('изображение', изображение)
cv2.waitKey (0)
cv2.destroyAllWindows ()

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

Мы используем cv2.функция imwrite () для сохранения изображения. Эта функция принимает два параметра - имя для сохранения изображения и изображение, которое вы хотите сохранить.

импорт cv2
изображение = cv2.imread ('идентифицировать.jpg ', -1)
cv2.imwrite ('save_image.png ', изображение)

Захват видео с веб-камеры

Чтобы записывать видео, мы начинаем с инициализации cv2.Функция VideoCapture (). Затем мы используем цикл «while», чтобы продолжить запись видео. Пока пользователь не нажимает клавишу выхода, мы можем прочитать кадры и показать их с помощью read () и cv2.функция imshow (). Затем мы вставляем клавишу «break», чтобы выйти из цикла; в данном случае цифра 27 - это клавиша ESC. Если пользователь нажимает клавишу ESC, они выходят из цикла. После выхода из цикла необходимо освободить захват.

импортировать numpy как np
импорт cv2
capture = cv2.VideoCapture (0)
в то время как (Истина):
ret, frame = захват.читать()
cv2.imshow ('рамка', рамка)
если cv2.waitKey (1) & 0xFF == 27:
перерыв
захватывать.релиз()
cv2.destroyAllWindows ()

Воспроизведение видеофайла

Воспроизведение видеофайла похоже на захват видео с веб-камеры. Для этого cv2.Используется функция VideoCapture (); имя видеофайла, который вы хотите воспроизвести, затем добавляется к функции. Снова используется цикл «while», и клавишей выхода в данном случае является клавиша «s» на клавиатуре. Это откроет и воспроизведет видеофайл и закроет его, когда пользователь нажмет клавишу «s».

импортировать numpy как np
импорт cv2
capture = cv2.VideoCapture ("Мегамозг.avi ")
в то время как (Истина):
ret, frame = захват.читать()
cv2.imshow ('рамка', рамка)
если cv2.waitKey (1) & 0xFF == ord ("s"):
перерыв
захватывать.релиз()
cv2.destroyAllWindows ()

Сохранение видеофайла

Сохранение видеофайла требует немного больше работы. CV2.Функция VideoWriter () принимает всего 4 параметра - имя выходного файла, код FourCC, количество кадров в секунду и размер кадра. Кроме того, необходимо указать код FourCC, который является видеокодеком, использующим cv2.Функция VideoWriter_fourcc (). Использование захвата.isOpened (), мы читаем фрейм и записываем выходной фрейм. Мы также можем показать кадры, используя cv2.функция imshow (). Затем мы используем cv2.waitKey (1) & 0xFF == ord ('s') для установки ключа выхода. В этом случае, если пользователь нажимает клавишу «s», он выйдет из цикла, а затем освободит захват и вывод и закроет окна.

импортировать numpy как np
импорт cv2
capture = cv2.VideoCapture (0)
fourcc = cv2.VideoWriter_fourcc (* 'XVID')
output = cv2.VideoWriter ('вывод.avi ', fourcc, 30 лет.0, (640 480))
в то время как (захват.открыт()):
ret, frame = захват.читать()
выход.написать (рамка)
cv2.imshow ('рамка', рамка)
если cv2.waitKey (1) & 0xFF == ord ('s'):
перерыв
захватывать.релиз()
выход.релиз()
cv2.destroyAllWindows ()

Рисование линий, кругов, прямоугольников и текстов

Первое, что мы научимся рисовать, это линию. Чтобы нарисовать линию, мы просто используем cv2.функция line (). Функция принимает 5 аргументов - исходное видео, начальную точку, конечную точку, цвет и толщину линии. В следующем случае мы решили нарисовать прямоугольную рамку (состоящую из 4 линий):

импорт cv2
capture = cv2.VideoCapture ('vtest.avi ')
в то время как True:
ret, frame = захват.читать()
width = int (захват.получить (3))
высота = int (захват.получить (4))
line1 = cv2.строка (кадр, (0,0), (0, высота), (255, 255, 255), 10)
line2 = cv2.строка (строка1, (0, 0), (ширина, 0), (255, 255, 255), 10)
line3 = cv2.строка (строка2, (0, высота), (ширина, высота), (255, 255, 255), 10)
line4 = cv2.строка (строка3, (ширина, 0), (ширина, высота), (255, 255, 255), 10)
cv2.imshow ('рамка', строка4)
если cv2.waitKey (40) == ord ('q'):
перерыв
захватывать.релиз()
cv2.destroyAllWindows ()

Далее мы нарисуем на видео как круг, так и прямоугольник. Чтобы нарисовать прямоугольник, мы используем cv2.Функция rectangle (), которая принимает 5 аргументов, как строка. Чтобы нарисовать круг, мы используем функцию cv2.circle (), который также принимает 5 аргументов - исходное видео, центральную точку, радиус, цвет и толщину.

импорт cv2
capture = cv2.VideoCapture ('vtest.avi ')
в то время как True:
ret, frame = захват.читать()
width = int (захват.получить (3))
высота = int (захват.получить (4))
прямоугольник = cv2.прямоугольник (рамка, (150, 15), (650, 550), (0,0,0), 11)
cv2.круг (прямоугольник, (250, 250), 60, (0,0,0), 11)
cv2.imshow ('рамка', рамка)
если cv2.waitKey (40) == ord ('q'):
перерыв
захватывать.релиз()
cv2.destroyAllWindows ()

Теперь давайте добавим текст к видео, которое у нас есть. Для этого нам нужно указать шрифт; здесь мы выбрали cv2.FONT_HERSHEY_SIMPLEX. После выбора шрифта мы можем использовать функцию cv2.putText () сделает все остальное. Cv2.putText () принимает 8 аргументов - исходное видео, текст, который вы хотите написать, положение, в котором вы хотите его, шрифт, увеличение, цвет, толщина и cv2.LINE_AA (благодаря чему все выглядит лучше).

импорт cv2
capture = cv2.VideoCapture ('vtest.avi ')
в то время как True:
ret, frame = захват.читать()
width = int (захват.получить (3))
высота = int (захват.получить (4))
font = cv2.FONT_HERSHEY_SIMPLEX
изображение = cv2.putText (frame, "VTEST.AVI ", (200, 200), шрифт, 4, (0,0,0), 5, cv2.LINE_AA)
cv2.imshow ('рамка', изображение)
если cv2.waitKey (40) == ord ('q'):
перерыв
захватывать.релиз()
cv2.destroyAllWindows ()

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

Счастливое кодирование!

Как увеличить FPS в Linux?
FPS означает Кадров в секунду. Задача FPS - измерить частоту кадров при воспроизведении видео или во время игры. Проще говоря, количество непрерывных ...
Лучшие игры Oculus App Lab
Если вы владелец гарнитуры Oculus, вы должны знать о загрузке неопубликованных приложений. Боковая загрузка - это процесс установки на гарнитуру содер...
10 лучших игр для Ubuntu
Платформа Windows была одной из доминирующих платформ для игр из-за огромного процента игр, которые разрабатываются сегодня с встроенной поддержкой Wi...