Автор оригинала: Adam McQuistan.
Вступление
В этой статье я предоставлю обзор курса Udemy Hands On Computer Vision with OpenCV & Python by Shirobon Biswas, размещенного на сайте онлайн-обучения Udemy . На момент написания этой статьи я бы сказал, что курс умеренно успешен: в общей сложности 146 оценок в среднем составляют 4,1/5 звезды, а общее количество студентов-851.
Согласно описанию, этот курс носит вводный характер и ориентирован на начинающих и средних программистов с базовым пониманием языка программирования Python. В то время, когда я начал этот курс, у меня было очень мало фоновых знаний в области обработки изображений или компьютерного зрения и никакого опыта работы с OpenCV, что делало меня идеальной целевой аудиторией для этого курса.
В следующих разделах я буду рассматривать и обсуждать различные области содержания, предоставляя свое мнение о материале.
Обзор раздела курса
Введение и установка
Этот раздел имеет типичное вводное содержание, которое охватывает большинство курсов такого рода, например, основное объяснение курса и наброски. Установка была представлена в виде простого описания того, как установить среду Anaconda вместе с OpenCV. На мой взгляд, было бы неплохо дать видеодемонстрацию установки необходимого программного обеспечения, а не инструкции по написанию.
Основы имиджа
В этом разделе автор курса описывает основы чтения и записи изображений на диск и с диска, а также способы захвата изображения с веб-ресурса по протоколу HTTP.
в дополнение к основному файловому вводу он прекрасно объясняет концепцию каналов изображения для изображений красного, зеленого и синего цветов. В дополнение к его объяснению каналов изображения есть несколько хороших примеров использования языка программирования Python и библиотеки OpenCV для выбора и управления каналами по отдельности, а также преобразования туда и обратно между цветными и оттенками серого изображениями. Наконец, есть описание того, как отображать изображения с помощью библиотеки OpenCV, а также библиотеки визуализации matplotlib .
В целом мое мнение об этом разделе вполне положительное. Я чувствую, что был достаточный баланс объяснений и примеров кодирования, чтобы достаточно описать, как читать, а также сохранять данные изображения с помощью диска.
Кроме того, я думаю, что включение how to read in an image over HTTP было отличным практическим решением, но автор не дал здесь понять, что используемая библиотека была не OpenCV, а подмодулем библиотеки Scikit-Learn, установленной вместе с установочным пакетом Anaconda. Обсуждение понятия каналов изображения было хорошо продумано и продемонстрировано на простом, но элегантном примере.
Гистограммы
Здесь автор обсуждает использование гистограмм для представления распределения интенсивностей по отдельным каналам цветного изображения, а также для изображения в оттенках серого. Есть примеры, которые показывают, как использовать библиотеку OpenCV для манипулирования пиксельными данными, содержащимися в цифровом изображении, в структуры данных, подходящие для отображения в виде гистограммы с помощью библиотеки matplotplib.
Хотя освещение в этом разделе короткое, оно по существу и закладывает основу для последующих тем курса.
Манипуляция пикселями и геометрия
В этом разделе автор начинает с демонстрации того, что данные цифрового изображения, которые OpenCV представляет пользователю, являются не чем иным, как многомерным массивом целых чисел numpy. Затем это уточняется на примерах манипулирования отдельными значениями пикселей с помощью знакомой индексации numpy. Затем автор переходит к тому, как использовать библиотеку OpenCV для рисования простых линий и других геометрических фигур.
Продемонстрировав, как рисовать основные геометрические фигуры, автор переходит к манипулированию изображениями. Темы переворачивания, масштабирования и поворота рассматриваются с использованием дополнительных примеров кодирования.
Именно во время этого раздела я заметил, что начал немного расстраиваться. Бывали моменты, когда автор, казалось, немного торопился и оживленно перебирал специфику различных параметров библиотечных методов. В этом разделе также произошел разрыв в последовательности. Например, в разделах, предшествующих этому, все изображения и сценарии, используемые в примерах, были предоставлены в качестве загружаемых ресурсов. Однако в этом разделе пара изображений была исключена из доступного ресурса, а несколько примеров сценариев не были предоставлены, что затрудняло, но не исключало возможности следовать им. Я должен отметить, что, когда я действительно следовал кодированию примеров, они прекрасно работали с использованием альтернативного изображения.
Утилита для обрезки проектов
Этот раздел является демонстрацией использования библиотеки OpenCV для захвата событий мыши на отображаемом изображении для выбора и создания обрезанного изображения оригинала.
Я был очень рад видеть этот раздел в курсе. Лично мне нравится, когда курс тратит время на демонстрацию полезности технологии для создания чего-то, что демонстрирует функциональность, как в случае с примитивным инструментом для обрезки в этом разделе.
Фильтрация, Размытие и Удаление шума
Я нашел этот раздел довольно увлекательным. Возможно, это связано с тем, что концепция применения методов фильтрации для улучшения цифровых изображений является одной из тех, которые я нахожу замечательными. Тем не менее, я чувствую, что инструктор делает достаточно разумную работу, объясняя, почему это полезно, и демонстрирует, как это сделать. К сожалению, снова наблюдается разрыв в последовательности в том, что автор не предоставляет изображение или пример используемого сценария.
Все О Пороговом Удержании
Этот раздел начинается с простого объяснения того, что такое пороговое значение. После этого инструктор предлагает ученику выполнить упражнение по кодированию, чтобы создать пороговое изображение вручную без помощи библиотеки OpenCV. Конечно, инструктор предлагает решение, но мне всегда нравится, когда такие задачи ставятся на курсах. Это не только усиливает часть концепции “как”, но и демонстрирует, “почему” такая библиотека, как OpenCV, так ценна.
Проект – Создание пользовательского фильтра блеска
В этом разделе инструктор демонстрирует, как создать фильтр изображения с помощью методов адаптивной фильтрации. В дополнение к фильтрации он демонстрирует, как изменить изображение, изменив отдельные значения цвета пикселей, снова приводя домой трехмерную структуру данных цифровых изображений и тот факт, что они являются просто многомерными массивами чисел.
Этот раздел казался немного поспешным, но содержание было представлено солидным примером, и как код, так и изображения, которыми манипулировали, были предоставлены, так что у студента была возможность продолжить изучение темы.
Наложение изображений
Опять же, этот раздел был немного поспешным, и я хотел бы получить более подробные объяснения того, какие параметры были изменены, а также их влияние на расслоение изображений. Снова произошел разрыв в последовательности, в результате чего пример кода и изображения не были предоставлены, что оставляет студента немного вне цикла в его способности следовать дальше.
Работа С Видео
В этом разделе инструктор демонстрирует, как использовать библиотеку OpenCV для взаимодействия с веб-камерой. Во-первых, он показывает, как захватывать кадры и отображать их в окне. Затем он продолжает показывать, как манипулировать цветовым представлением видеопотока на основе ввода с клавиатуры.
Опять же, примеры кодирования не приведены в этом разделе.
Освоение Контуров
Как следует из названия, этот раздел охватывает понятие контуров, ограничивающих объекты на изображении. Здесь инструктор делает довольно хорошую работу, используя некоторые довольно простые самодельные изображения простых монохроматических форм для упрощения концепций.
Однако, как и в некоторых других разделах этого курса, я чувствую, что значительное количество деталей было замазано в объяснении различных параметров, используемых для настройки результатов методов OpenCV. Я нахожу это немного разочаровывающим и чувствую, что простое заявление о том, что тема “сложна, и вы должны играть с ценностями, пока не получите желаемый результат”, не является достаточным объяснением.
Проект – Обнаружение транспортного средства
В заключительном разделе этого курса показано, как создать приложение, которое распознает транспортные средства по данным дорожных изображений. Как я уже упоминал ранее, я действительно ценю, когда курсы создают функциональное приложение, которое демонстрирует реальную ценность изучаемой технологии. Я благодарю автора за включение этого раздела, хотя он был немного сложным и трудным для понимания, но я определенно извлек из него пользу.
Вывод
В этой статье я стремился дать справедливый и сбалансированный обзор курса Hands On Computer Vision with OpenCV & Python by Shrobon Biswas on Udemy . При этом моя цель состояла в том, чтобы описать охватываемый контент, стараясь при этом не разглашать специфику фактического контента, поскольку я чувствую, что преподаватель обеспечил ценность для сообщества онлайн-обучения.
Как было сказано в самом начале, я пришел на этот курс с очень слабым пониманием концепций компьютерного зрения, вооруженный только разумным пониманием языка программирования Python. Тем не менее, я чувствую, что мне удалось узнать похвальное количество о том, как использовать библиотеку OpenCV для взаимодействия и манипулирования как графическим, так и видеоконтентом. На мой взгляд, я думаю, что можно было бы лучше охватить специфику некоторых функций библиотеки и лежащую в ее основе теорию, но я не уверен, что это было главной целью этого курса.
У меня действительно есть некоторые претензии к организационному аспекту структуры и содержания курса, поскольку в некоторых частях он казался немного скомканным. Например, было несколько случаев, когда примеры изображений и сценариев не были предоставлены, и автор упоминает, что возвращается, чтобы охватить различные темы, которые позже никогда не встречаются.
В целом, я бы сказал, что этот курс является хорошей покупкой, если вы можете поймать его в продаже, но базовая цена в 199 долларов, вероятно, слишком высока для предоставленной стоимости.
Как всегда, спасибо за чтение и не стесняйтесь комментировать или критиковать ниже.