<MyRusakov.ru />

Программирование на C# с Нуля до Гуру

Программирование на C# с Нуля до Гуру

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

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

Помимо самого курса Вас ждут ещё 3 бесплатных ценных Бонуса: «Технология Windows Presentation Foundation», «Создание библиотеки классов» и «Правильная работа со справочником».

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Работа с видео в Python OpenCV

Работа с видео в Python OpenCV

В библиотеке OpenCV для Python работа с видео может проходить либо путем обработки видеофайлов из файловой системы, либо же путем обработки потокового видео, например, с Web-камеры. Для работы с видео из файловой системы необходимо поместить видео файл в директорию общую с файлом нашего кода. Вариант для Web камеры подразумевает простое указание индекса камеры, здесь это - 0, если же на ПК установлено несколько камер, то указываем 1, и так далее. При этом за один раз можно использовать только один из вариантов.

import cv2 # Импорт модуля OpenCV

cap = cv2.VideoCapture(0);               # Видео вывод с веб камеры компьютера, при включенной камере
cap = cv2.VideoCapture("VIDEO0102.mp4"); # Вывод с видео файла

print(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) # Вывод в консоли размера нашего окна.


cap.set(3,1280) # Установление длины окна
cap.set(4,700)  # Ширина окна

print(cap.get(3))
print(cap.get(4))

Объект cap будет содержать метод read, который возвращает два параметра ret и frame. Первый параметр есть булево значение и принимает 1 или 0. Для нас интерес представляет второй параметр frame. Он содержит данные в виде массива кадров. Можно вывести их на экран.

while(True): # Вывод кадров производится  в цикле
  
  ret, frame = cap.read() 
  frame = cv2.rectangle(frame,(384,0),(510,128),(0,0,255),10) # добавление к видео выводу объекта прямоугольника
  
  
  print(frame)  # Вывод массива в консоль
  
  cv2.imshow("frame",frame) # Метод для визуализации массива кадров 
  

cap.release() 
cv2.destroyAllWindows()

В Python модуле cv2 есть множество интересных инструментов для работы, среди них, например, фильтры. Их множество, но мы рассмотрим всего несколько. Мы будем использовать Гауссовский фильтр и фильтр Canny, который будет выдавать черно-белые кадры в виде белых контуров и черных областей. Перейдем к коду:

while(True):
  ret, frame = cap.read()
  frame = cv2.rectangle(frame,(384,0),(510,128),(0,0,255),10)
  gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Перевод массива кадров в черно-белую градацию
  
  edges = cv2.Canny(gray, 1, 50) # Нахождение контуров 
  cv2.imshow("edges",edges) # обработанный вариант
  
  print(frame)
  
  cv2.imshow("frame", frame) # оригинальный вариант
  

cap.release()
cv2.destroyAllWindows()

Смотря на обработанное видео можно заметить большое количество контуров или шумов, мешающим правильно распознать образ нашего изначального варианта. Их необходимо устранить. Используем для этого гауссовский фильтр:

  
  gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) 
  gray = cv2.GaussianBlur(gray, (7, 7), 1.5) # Параметры позволяют регулировать шумность
  
  edges = cv2.Canny(gray, 1, 50) # Нахождение контуров 
  cv2.imshow("edges",edges) # вывод  на экран

Логика здесь следующая объект frame передается в метод модуля cv2 GaussianBlur, из которого создается другой объект gray, передающийся в метод Canny. Т.е. сначала черно-белый массив фильтруется от шумов, а затем создается его контурная модель, которая выводится на экран методом cv2.imshow("edges",edges). Возникает вопрос для чего все это нужно, если говорить коротко, то данные операции являются этапами в детектировании различных объектов и их распознавании.

На этом все, спасибо за внимание!

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.