Компьютерное зрение на Python. Первые шаги
Покупка
Издательство:
Лаборатория знаний
Автор:
Шакирьянов Эдуард Данисович
Год издания: 2021
Кол-во страниц: 163
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-00101-944-2
Артикул: 767879.01.99
В книге изложен учебный курс для школьников, начинающих изучать компьютерное зрение с языком программирования Python и библиотекой OpenCV. Описаны особенности установки языка Python, различных библиотек, в том числе OpenCV, и операционной системы Raspbian. Материал разделен на три отдельные темы: программирование на Python, поиск и выделение цветных объектов на графическом изображении и в видеопотоке средствами OpenCV, программирование колесной робоплатформы под управлением Raspberry Pi 3, оснащенной CSI-камерой. Большую помощь читателю окажут многочисленные иллюстрации и листинги программных кодов, а также ссылки на источники и интернет-ресурсы. Книга будет полезна школьникам среднего и старшего возраста, педагогам дополнительного образования и всем начинающим изучать компьютерное зрение с помощью языка программирования Python и открытой библиотеки компьютерного зрения OpenCV-Python.
Тематика:
ББК:
УДК:
- 004: Информационные технологии. Вычислительная техника...
- 087: Издания для молодежи. Детская, юношеская литература. Книги для самых маленьких. Книжки с картинками
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
- 15.03.06: Мехатроника и роботехника
- 44.03.01: Педагогическое образование
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Москва Лаборатория знаний 2021 Электронное издание КОМ ОМПЬЮ ЬЮТЕРНО НОЕ Е ЗРЕН РЕНИЕ Е НА PYTHO HON ® ПЕРВЫЕ ШАГИ Э. Д. Д. Ша Шаки кирьянов
УДК 087.5 + 004.42 + 004.896 ББК 32.81 + 32.973 Ш17 С е р и я о с н о в а н а в 2020 г. Шакирьянов Э. Д. Ш17 Компьютерное зрение на Python R ○. Первые шаги / Э. Д. Шакирьянов. — Электрон. изд. — М. : Лаборатория знаний, 2021. — 163 с. — (Школа юного инженера). — Систем. требования: Adobe Reader XI ; экран 10". — Загл. с титул. экрана. — Текст : электронный. ISBN 978-5-00101-944-2 В книге изложен учебный курс для школьников, начинающих изучать компьютерное зрение с языком программирования Python и библиотекой OpenCV. Описаны особенности установки языка Python, различных библиотек, в том числе OpenCV, и операционной системы Raspbian. Материал разделен на три отдельные темы: программирование на Python, поиск и выделение цветных объектов на графическом изображении и в видеопотоке средствами OpenCV, программирование колесной робоплатформы под управлением Raspberry Pi 3, оснащенной CSI-камерой. Большую помощь читателю окажут многочисленные иллюстрации и листинги программных кодов, а также ссылки на источники и интернет-ресурсы. Книга будет полезна школьникам среднего и старшего возраста, педагогам дополнительного образования и всем начинающим изучать компьютерное зрение с помощью языка программирования Python и открытой библиотеки компьютерного зрения OpenCV-Python. УДК 087.5 + 004.42 + 004.896 ББК 32.81 + 32.973 Деривативное издание на основе печатного аналога: Компьютерное зрение на Python R ○. Первые шаги / Э. Д. Шакирьянов. — М. : Лаборатория знаний, 2021. — 160 с. : ил. — (Школа юного инженера). — ISBN 978-5-00101-318-1. В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации ISBN 978-5-00101-944-2 © Лаборатория знаний, 2021 2
Оглавление Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Глава 1. Начало программирования на Python . . . . . . . . . . . . . . . . . . . . . . . . 7 О языке Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Установка Python и дополнительных библиотек . . . . . . . . . . . . . . . . . . . . . . . 8 Синтаксис языка Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Программирование на языке Python с помощью исполнителя Turtle 15 Turtle-методы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Изучение функций с помощью графического исполнителя Turtle . . . . . . . 19 Методы TurtleScreen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Итоги главы 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Глоссарий к главе 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Список литературы к главе 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Глава 2. Начало работы с OpenCV-Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Установка библиотеки OpenCV-Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Основные операции в OpenCV-Python. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Открытие файла с изображением . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Изменение размера изображения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Вырезка фрагмента изображения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Поворот изображения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Зеркальное отражение изображения по осям. . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Сохранение изображения в файл на локальный диск. . . . . . . . . . . . . . . . . . . . 48 Поиск объекта по цвету. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Цветовые пространства. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Поиск объекта в цветовом пространстве HSV . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Определение координат найденного объекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Отображение видео в OpenCV-Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Отображение видеоданных с web-камеры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Отображение видеоданных из файла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Поиск цветных объектов на видео с помощью OpenCV-Python . . . . . . 65 Суммирование цветовых масок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Оглавление Настройка цветового фильтра средствами OpenCV. . . . . . . . . . . . . . . . . . . . 73 Поиск цветных объектов на видео в реальном времени. . . . . . . . . . . . . . . . 79 Выделение контуров объектов с помощью OpenCV-Python . . . . . . . . . . 84 Выделение прямоугольных и эллиптических контуров. . . . . . . . . . . . . . . . 90 Выделение прямоугольных контуров. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Фильтрация прямоугольных контуров . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Вычисление угла поворота прямоугольного контура . . . . . . . . . . . . . . . . . . . . 99 Выделение и фильтрация эллиптических контуров . . . . . . . . . . . . . . . . . . . . . 105 Выделение контуров дорожных знаков в видеопотоке. . . . . . . . . . . . . . . . . 110 Итоги главы 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 Глоссарий к главе 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Список литературы к главе 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Глава 3. Программирование Raspberry Pi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Микрокомпьютеры Raspberry Pi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Установка операционной системы Raspbian . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Установка OpenCV на Raspberry Pi 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Удаленное управление Raspberry Pi 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Подключение модулем камеры CSI для Raspberry Pi и захват видео 136 Управление моторами с помощью Raspberry Pi на примере робота AlphaBot. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Программирование движения робота AlphaBot вдоль черной линии 149 Итоги главы 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Глоссарий к главе 3. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 Список литературы к главе 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 Заключение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
Предисловие Ни для кого не секрет, что роботы все чаще встречаются в нашей повседневной жизни. Роботы развлекают детей, летают в космос, помогают спасателям, управляют автомобилями и боевой техникой. С каждым поколением они становятся все совершеннее. О новых разработках в робототехнике мы узнаем с экранов телевизоров и на сайтах в Интернете, со страниц журналов и книг. Современные роботы способны видеть, распознавать объекты окружающего их мира и выполнять сложные операции. Более того, современные роботы способны обучаться, адаптируясь к внешней среде. Поведение таких роботов очень близко к поведению живых существ. Значимой составляющей в подобных роботах является система компьютерного зрения. Эта технология позволяет роботам с помощью специальных алгоритмов и программ анализировать поток данных, который они получают с видеокамеры. Главными задачами компьютерного зрения является обнаружение, идентификация и классификация объектов окружающего мира, которые попали в поле зрения видеокамеры. Развитые системы компьютерного зрения могут распознавать различные активности, которые проявляют обнаруженные объекты. До недавнего времени изучение, проектирование и создание устройств, оснащенных простейшим компьютерным зрением, потребовали бы от разработчика больших интеллектуальных и материальных ресурсов. Но прогресс не стоит на месте. С появлением недорогих компактных микрокомпьютеров, а также доступного программного обеспечения изучение и программирование несложных систем с компьютерным зрением стало возможно даже для школьников. Книга, которую вы держите в руках, ориентирована на читателей, начинающих изучать компьютерное зрение на языке Python. Весь материал разбит на три главы и снабжен иллюстрациями, ссылками на источники и программными кодами. После каждой главы приводится список литературы и интернет-ресурсов, которые могут быть полезны для дополнительного изучения.
Предисловие 6 Первая глава представляет собой краткое введение в программирование на языке Python. В настоящее время доступно множество различных источников и интернет-ресурсов, с помощью которых можно освоить основы программирования на Python, поэтому здесь этот вопрос не рассматривается подробно. Начальные навыки программирования в Python довольно легко освоить самостоятельно. Синтаксис языка Python прост и понятен, а его особенности можно постичь в процессе практики. Вторая глава посвящена ключевой теме книги — изучению основ компьютерного зрения. Одним из самых мощных и доступных инструментов программирования компьютерного зрения на Python является библиотека OpenCV (Open Source Computer Vision Library) — библиотека компьютерного зрения с открытым исходным кодом. Наиболее важные, с точки зрения автора, вопросы, первоначально необходимые для работы с OpenCV, изложены в этой главе. Весь материал главы носит прикладной характер и условно разбит на пять тем: 1) установка OpenCV; 2) основные операции в OpenCV; 3) выделение объекта по цветовой маске; 4) работа с видеопотоком; 5) контурный анализ. В третьей главе рассмотрены вопросы, связанные с подготовкой микрокомпьютера Raspberry Pi 3 к работе, установкой на него библио теки OpenCV и программированием движения робоплатформы, оснащенной видеокамерой, вдоль черной линии. На сегодняшний день для реализации систем с компьютерным зрением самой подходящей по многим критериям является, пожалуй, техническая платформа на основе семейства микрокомпьютеров Raspberry Pi. Вычислительных ресурсов Raspberry Pi хватает для большинства задач начального уровня. Предлагаемая книга не является исчерпывающим пособием по изучению компьютерного зрения с помощью OpenCV-Python. Здесь в сжатой форме собран материал, который будет полезным для начинающих изучать язык программирования Python и основы компьютерного зрения с библиотекой OpenCV-Python. Итак, давайте окунемся в интересный мир программирования и робототехники! Вместе разберемся с принципами, на которых реализовано компьютерное зрение роботов. Настроим свой первый микрокомпьютер и научим его управлять робоплатформой по картинке с видеокамеры.
Начало программирования на Python О языке Python Python — это интерпретируемый язык программирования. Исходный код преобразуется в машинный частями по мере его выполнения специальной программой, которая называется интерпретатор. Язык Python придумал голландец Гвидо ван Россум примерно в 1991 г. После того как Россум разработал язык Python и выложил его в Интернет, появилось целое сообщество программистов, которые активно его улучшают и совершенствуют. Новые версии языка регулярно выходят на его официальном сайте1 [1]. Python отличается своим уникальным синтаксисом. Даже начинающий программист может легко научиться кодировать на этом языке программирования. Одной из особенностей языка является его требовательность к отступам, заставляющая программистов воспитывать в себе культуру написания программных кодов. В результате программный текст получается структурированным, легко читается и понимается. Добавим еще, что Python — это полноценный универсальный объектно-ориентированный язык программирования. ПОЯСНЕНИЕ Технология объектно-ориентированного программирования2 основана на представлении программы в виде взаимодействия не 1 Python Software Fundation. // Официальный сайт разработчика Python. URL: http://python.org 2 Объектно-ориентированное программирование. // Викиучебник. URL: https:// ru.wikibooks.org / wiki / Объектно-ориентированное_программирование
Начало программирования на Python 8 которого числа объектов. При этом каждый объект принадлежит к конкретному классу и обладает характерным для этого класса набором свойств и методов. Например, Шарик и Бобик являются объектами, которые взаимодействуют между собой (лают), при этом оба относятся к классу «Собаки». Следовательно, они, как и все собаки, имеют четыре лапы, хвост и умеют лаять. А Барсик является объектом, который принадлежит к классу «Кошки». Он тоже имеет четыре лапы и хвост, но в отличие от собак умеет мяукать. И в то же время оба класса «Собаки» и «Кошки» имеют общие свойства: четыре лапы и хвост, которые были унаследованы от более широкого класса «Домашние животные». К объектно-ориентированным языкам относятся языки C / C++, Jawa, Object Pascal. Кроме того, Python является свободно распространяемым языком на основании лицензии, совместимой с GNU General Public License. Кроссплатформенные возможности Python позволяют программировать на этом языке под различными операционными системами, например Windows, Linux, Mac OS и др. Это добавляет привлекательности Python среди программистов. Установка Python и дополнительных библиотек Установка Python не представляет особых трудностей. Предварительно необходимо скачать установщик Python с официального сайта [1]. В целях безопасности ваших данных на компьютере не рекомендуется скачивать Python из сторонних ресурсов. Итак, заходим на сайт Python и в меню Downloads скачиваем последнюю актуальную версию для своей операционной системы (рис. 1.1). В нашем случае это будет операционная система Windows. После окончания загрузки следует открыть папку (по умолчанию установочный файл сохранится в папке Загрузки) с загруженным исполняемым файлом и запустить его. В диалоговом окне установщика (рис. 1.2) следует поставить галочку напротив пункта Add Python 3.7 to PATH. Затем ждем завершение процесса установки. По окончании установки Python запускается из меню Пуск. Более подробные инструкции по установке, в том числе и на другие операционные системы, можно посмотреть здесь1 [2, 3]. 1 Python. Урок 1. Установка. // Devpractice. Разработка программного обеспечения, технологии и наука. URL: https://devpractice.ru / python-lesson-1-install /
Установка Python и дополнительных библиотек 9 Для работы в Python, кроме стандартных библиотек и пакетов, иногда требуется установить дополнительные специализированные библиотеки. В настоящее время под различные задачи разработано огромное количество библиотек и пакетов для Python. Чтобы установить дополнительные пакеты и библиотеки, используют утилиту pip. Рис. 1.1. Меню загрузки Python для операционной системы Windows Рис. 1.2. Диалоговое окно установщика с выбором параметров установки языка Python
Начало программирования на Python 10 ПОЯСНЕНИЕ pip — система управления пакетами, которая используется для установки и управления программными пакетами и библиотеками, написанными на Python. Начиная с версии Python 2.7.9 и Python 3.4, дистрибутив Python по умолчанию содержит утилиту управления пакетами pip (или pip3 для Python 3). С помощью pip, используя соединение с Интернетом, можно легко установить практически любой дополнительный пакет или библиотеку. Работа с pip осуществляется в командной строке Windows (рис. 1.3). Рис. 1.3. Командная строка Windows Установка нового пакета производится следующим образом. Например, чтобы установить пакет numpy, необходимо ввести в командной строке: pip install numpy