В этой части нашего обзора Rapberry Pi мы рассмотрим как подключение модуля камеры (Camera Module)  превращает этот микрокомпьютер в мощный инструмент для получения фотографий, видео, а также распознавания различных объектов, что другими словами называется компьютерное зрение (computer vision). Как и всё в этом микрокомпьютере, подключение камеры — такое же простое действие, не требующее серьёзных навыков и умений. Разработанный специально для новичков, он позволяет за считанные минуты развернуть этот функционал и сразу приступать к исследованию и реализации ваших идей в проектах с использованием технологий компьютерного зрения.

Камера для Raspberry Pi является ещё одним устройствомм ввода и представляет собой отдельный модуль на печатной плате квадратной формы, имеющей специальные отверстия для её фиксации/крепления с гибим кабелем-шлейфом, подсоединяемым к разъёму камеры (Последовательный интерфейс камеры, Camera Serial Interface, CSI) на плате микрокомпьютера. Этот порт обеспечивает передачу видеоданных в высоком разрешении, что открывает перед вами огромное направление деятельности, использующей визуальное взаимодействие с объектами в реальном окружающем нас мире.


Доступны две версии модуля камеры Raspberry Pi: обычная версия и версия «NoIR». Эти версии легко различить визуально: нормальная версия имеет зеленую печатную плату, а версия NoIR — черную печатную плату. Если вы хотите снимать обычные фотографии и видео в хорошо освещенном помещении, вы всегда должны использовать обычную версию для получения наилучшего качества изображения. Версия NoIR называется именно так, потому что в ней нет инфракрасного (IR, Infrared) фильтра и она предназначена для использования с источниками инфракрасного света для получения фотографий и видео в полной темноте. Если вы строите к примеру, скворечник, или систему видеонаблюдения, или разрабатываете другой проект, связанный с ночным видением, вам нужна версия NoIR, но не забудьте одновременно купить и источник инфракрасного света для «постветки» объектов, если они сами не излучают тепло!

На данный момент текущая версия модуля камеры Raspberry Pi имеет индекс v2 (или версия 2.1). Модуль собирается на высококачественном датчике изображения Sony IMX219 — датчике того же типа, который можно найти на на задней панели смартфона или планшета. Это 8-мегапиксельный сенсор, что буквально означает, что он может делать снимки с разрешением до 8 миллионов пикселей. Он делает это путем захвата изображений и фиксации данных о нем на матрице с размерами 3280 пикселей в ширину и 2464 пикселей в высоту: умножьте эти два числа вместе и вы получите в общей сложности чуть более 8 миллионов отдельных пикселей!

Помимо фотографий, модуль камеры может снимать видеоматериалы с разрешением Full HD — таким же, как и у большинства телевизоров — и со скоростью 30 кадров в секунду (30 frames per second, 30 fps). Для более плавного движения или даже для создания эффекта замедленного движения камеру можно настроить на захват с более высокой частотой кадров, уменьшив разрешение: 60 кадров в секунду для видеоматериалов с разрешением 720p и до 90 кадров в секунду для разрешения 480p (VGA).

 

 

Установка модуля камеры

Как и любое дополнительное оборудование, модуль камеры следует подключать или отключать от Raspberry Pi только при выключенном питании и отсоединенном от сети кабеле питания. Если ваш Raspberry Pi включен, выберите «Выключение» в главном меню, подождите, пока он выключится, и отключите его от сети.

Распакуйте модуль камеры и проверьте комплектацию: в упаковке вы должны найти небольшую печатную плату, которая является самим модулем камеры, и плоский ленточный кабель. В большинстве случаев ленточный кабель уже подключен к модулю камеры. Если это не так, переверните модуль вверх дном, чтобы объектив камеры находился снизу, и найдите плоский пластиковый разъем. Осторожно зацепите ногтями за выступающие края и потяните наружу, пока заслонка-фиксатор частично не выйдет. Поверните ленточный кабель серебристыми краями вниз и синим пластиком вверх и вставите под фиксатор, который вы только что вытащили, затем аккуратно задвиньте фиксатор на место со щелчком. Не имеет значения, какой конец кабеля вы используете. Если кабель установлен правильно, он будет стоять ровно и не будет выскакивать из разъёма в случае, если вы его слегка потянете. Если нет — вытяните фиксатор и попробуйте установить кабель ещё раз с начала.

Таким же образом установите другой конец кабеля. Найдите порт камеры (CSI) на Raspberry Pi и осторожно потяните фиксатор вверх. Если ваш Raspberry Pi размещён в защитном корпусе — вам следует вынуть его из корпуса перед подключением модуля к разъёму. Расположив Raspberry Pi так, чтобы порт HDMI был обращен к вам, вставьте ленточный кабель таким образом, чтобы серебристые края были слева от вас, а синий пластик — справа, затем осторожно задвиньте фиксатор на место. Если кабель установлен правильно, он будет расположен ровно и не выскочит, если вы его слегка потянете. Если нет, вытяните фиксатор и повторите процедуру еще раз.

Модуль камеры поставляется с небольшим кусочком синего пластика, закрывающим объектив и предназначенным для защититы его от царапин во время производства, транспортировки и установки. Чтобы подготовить камеру к работе, найдите на плёнке, закрывающей объектив небольшой пластиковый клапан, осторожно потяните за него и снимите эту пленку.

 

РЕГУЛИРОВКА ФОКУСА

Модуль камеры Raspberry Pi обычно поставляется с небольшим пластиковым колесиком. Оно предназначено для настройки фокуса объектива. Хотя заводская установка фокусировки обычно идеальна, если вы используете камеру для работы с очень близким планом, вы можете сдвинуть колесико над объективом и осторожно повернуть его, чтобы настроить фокус вручную.

 

Подключите блок питания обратно к Raspberry Pi и подождите, пока загрузится операционная система. Прежде чем вы сможете использовать камеру, вам нужно сообщить Raspberry Pi, что она подключена. Для этого нажмите значок «Малинка» (Пуск), чтобы загрузить меню, выберите категорию «Настройки» (Preferences) и нажмите «Конфигурация Raspberry Pi» (Raspberry Pi Configuration). Когда инструмент конфигурации загрузится, щелкните вкладку «Интерфейсы» (Interfaces), найдите в списке запись «Камера» (Camera) и щелкните круглый переключатель слева от «Включено» (Enabled), чтобы включить его. Нажмите OK, и инструмент предложит вам перезагрузить Raspberry Pi. Сделайте это, и ваша камера будет готова к использованию!

 

 

Тестирование модуля камеры

Чтобы убедиться, что ваш модуль камеры установлен правильно и вы включили интерфейс в Raspberry Pi Configuration Tool, вы можете использовать инструмент raspistill. Это, наряду с raspivid для видео, предназначено для захвата изображений с камеры с помощью интерфейса командной строки (CLI, command-line interface) Raspberry Pi.

В отличие от программ, которыми вы пользовались до сих пор, в меню вы не найдете raspistill. Вместо этого щелкните значок малины, чтобы загрузить меню, выберите категорию «Стандартные» (Accessories) и щелкните «Терминал» (Terminal). В появившемся черном окне с зелеными и синими надписями необходимо будет ввести соответствующую команду.

Чтобы протестировать камеру, введите в Терминал следующее:

Как только вы нажмете ENTER, вы увидите на экране большое изображение того, что видит камера. Это называется предварительным просмотром в реальном времени (live preview) и, если вы не укажете иное, оно будет длиться 5 секунд. По истечении этих 5 секунд камера сделает одно неподвижное изображение и сохранит его в вашей домашней папке под именем test.jpg. Если вы хотите сделать ещё один снимок, введите ту же команду еще раз, но не забудьте изменить имя выходного файла после -o, иначе вы сохраните новый файл поверх своего первого изображения и первое изображение будет безвозвратно утеряно!

Если изображение предварительного просмотра в реальном времени перевернуто, то вам нужно сообщить raspistill, что камера повернута. Модуль камеры имеет ленточный кабель, а фиксация модуля во внешних устройствах часто производится под разным углом относительно вертикали, отсчитывающейся от «нулевого» положения, когда выходящий из нижнего края модуля кабель нормально направлен вниз. Если изображение смотрит «в бок» или перевернтуро «вверх ногами», то вы можете программно повернуть изображение на 90, 180 или 270 градусов с помощью переключателя -rot (rotation, вращение). Для камеры, установленной с кабелем, выходящим сверху (т.е. под углом 180 шрадусов относительно «нулевого» положения, просто используйте следующую команду:

Если ленточный кабель смотрит направо, используйте значение поворота 90 градусов; если он смотрит налево, используйте угол 270 градусов. 

Чтобы увидеть полученное изображение, откройте «Диспетчер файлов» (File Manager) из категории «Стандартные» (Accessories) в главном меню. Полученное вами изображение под названием test.jpg будет в вашей домашней папке home/pi. Найдите его в списке файлов, затем дважды щелкните по нему, чтобы загрузить в средство просмотра изображений. Теперь вы можете прикрепить это изображение к электронным письмам, загрузить его на веб-сайты через браузер или перетащить на внешнее запоминающее устройство.

 

 

Представляем picamera

Самый удобный способ управления модулем камеры — использовать Python и библиотеку picamera, что даёт полный контроль над возможностями предварительного просмотра, получения изображения и захвата видео модулем камеры. Эта связка инструментов также позволяет интегрировать камеру в свои собственные проекты, более того даже комбинируя их с программами, которые используют модуль GPIO через библиотеку GPIO Zero!

 

В этой части нашего обзора предполагается наличие у вас опыта работы с Python и интегрированной средой разработки (IDE) Thonny! Если вы еще не имеете этой квалификации, обратитесь к разделам  «Изучаем Raspberry Pi. Часть 5. Программирование на Python» и «Изучаем Raspberry Pi. Часть 7. Подключаем платы расширения» и сначала поработайте над проектами в них.

 

Закройте Терминал, если он еще открыт, щелкнув «крестик» в правом верхнем углу окна, затем загрузите Thonny из категории «Программирование» (Programming) главного меню. Сохраните новый проект как Camera, затем начните импортировать библиотеки, необходимые для вашей программы, введя следующее в область сценария:

Последняя строка позволяет вам управлять модулем камеры с помощью функции camera. Для начала введите следующее:

Нажмите «Выполнить» (Run), и ваш рабочий стол исчезнет; на его месте вы увидите в полноэкранном режиме все, что видит камера. Попробуйте переместить её или помахать рукой перед объективом, и вы увидите, что изображение на экране повторит всё, что увидит камера. Через 10 секунд окно предварительного просмотра закроется, а программа завершится, но, в отличие от предварительного просмотра из raspistill,  изображение не будет при этом сохранено. Пример полноэкранного предварительного просмотра:

Если предварительный просмотр отображался под неправильным углом, вы можете программно повернуть изображение, чтобы оно отображалось правильно. Сразу под строкой camera = PiCamera () введите:

Эта строка исправит ситуацию, если предварительный просмотр был отображен под неправильным углом. Как и в случае с raspistill, camera.rotation позволяет повернуть изображение на 90, 180 или 270 градусов, в зависимости от того, выходит ли кабель с правой, верхней или левой стороны модуля камеры.  Возьмите за правило использовать camera.rotation в начале каждой программы, которую вы пишете, чтобы получать изображения в правильном ракурсе!

 


Захват неподвижных изображений

Чтобы сделать снимок, а не просто показать предварительный просмотр в реальном времени, вашу программу необходимо изменить. Начните с уменьшения задержки для предварительного просмотра: найдите строку sleep(10) и измените ее на:

А прямо под этой строкой добавьте следующее:

Обратите внимание!

Когда камера находится в режиме предварительного просмотра, она автоматически анализирует видео, чтобы узнать, нужно ли изменить свои настройки для получения наилучшего качества. Вы увидите это, если находитесь в очень темной или очень светлой среде, когда предварительный просмотр сначала невозможно увидеть, а затем он быстро становится чётче. Чтобы дать камере время на настройку, всегда добавляйте в программу как минимум 2-секундный период предварительного просмотра, прежде чем делать снимок.

 

Функция camera.capture сообщает Python о том, что нужно сохранить получаемое неподвижное изображение. В ней также указывается название файла-изображения и путь к нему. В этом примере вы сохраняете его на рабочий стол — найдите его, посмотрев чуть ниже корзины для мусора. Если окно Thonny мешает, просто щелкните и перетащите строку заголовка в сторону. Дважды щелкните файл, чтобы просмотреть сделанное изображение. Поздравляем: вы только что запрограммировали работу камеры!

 

 

Захват видео

Вы можете снимать не только неподвижные изображения, но и динамичное видео. Удалите все, что находится между строками camera.start_preview () и camera.stop_preview (), затем введите следующее под строкой camera.start_preview ():

При запуске данного кода появится окно предварительного просмотра камеры, и в этот раз также будет записан файл на рабочем столе. Подождите 10 секунд, которые вы приказали Python спать — возможно, немного потанцуйте перед камерой, чтобы сделать видео поинтереснее — затем, когда предварительный просмотр закроется, вы увидите свой видеофайл сохранённым на рабочем столе.

Чтобы воспроизвести видео, просто дважды щелкните файл video.h264 на рабочем столе и видео начнет воспроизводиться! После того, как видео закончится, программное обеспечение плеера закроется с дружественным сообщением в Терминале. Поздравляем: теперь вы можете снимать видео с помощью модуля камеры Raspberry Pi!

 

 

Покадровая анимация при нажатии кнопки

Используя то, что вы только что узнали, и свои знания о том, как подключить оборудование к разъёму GPIO Raspberry Pi из нашей статьи «Изучаем Raspberry Pi. Часть 6. Использование Scratch и Python для управления физическими устройствами», пора создать что-то особенное: например, вашу собственную студию покадровой анимации (stop-motion animation).

Покадровая анимация — это процесс съёмки большого количества неподвижных объектов, таких как различные модели автомобилей или фигурок, и небольшого перемещения объектов между каждыми последующими изображениями. Хотя объекты никогда не движутся ни на одной из картинок, если вы покажете их один за другим достаточно быстро, то будет похоже, что они движутся так быстро или медленно, как вы задали!

Для этого проекта вам понадобится кнопочный переключатель, макетная плата, перемычка «папа-папа» (M2M) и пара перемычек «папа-мама» (M2F). Если у вас нет макетной платы, вы можете подключить коммутатор, используя вместо этого кабели «мама-мама» (F2F), но его будет намного труднее нажимать. Если вам нужно напомнить о каком-либо из этих компонентов, обратитесь к упомянутой выше статье «Изучаем Raspberry Pi. Часть 6. Использование Scratch и Python для управления физическими устройствами». Вам также понадобятся объекты для анимации: это может быть что угодно, от кусочка пластилина — до игрушечной машинки или фигурки.

Начните с создания схемы: добавьте кнопку на макетную плату, затем подключите шину заземления макета к контакту заземления на Raspberry Pi (отмечен GND) с помощью перемычки «папа-мама». Используйте перемычку «папа-папа», чтобы подключить одну ножку коммутатора к шине заземления на макетной плате, затем перемычку «папа-мама», чтобы подключить другую ножку коммутатора к контакту 2 GPIO (обозначен GP2).

Создайте новый проект в Thonny и сохраните его как Stop Motion. Начните с импорта и настройки библиотек, необходимых для использования камеры и порта GPIO:

Затем напишите следующее:

Нажмите «Выполнить» (Run), и вы увидите окно предварительного просмотра камеры. Предварительный просмотр будет оставаться на экране до тех пор, пока вы не нажмете кнопочный переключатель: нажмите его сейчас, и предварительный просмотр закроется после того, как ваша программа сохранит изображение на рабочем столе. Найдите изображение с именем image.jpg и дважды щелкните его, чтобы открыть и подтвердить, что программа работает корректно.

Покадровая анимация предполагает создание множества неподвижных изображений, чтобы создать иллюзию движения, когда они все собраны вместе и воспроизводятся по очереди. Наличие большого количества этих отдельных изображений на рабочем столе приведет к беспорядку, поэтому вам понадобится отдельная папка для их хранения. Щелкните правой кнопкой мыши в любом месте рабочего стола, на котором еще нет файла или значка, затем выберите «Создать новую» (Create New) и «Папку» (Folder). Назовите её animation строчными буквами, затем нажмите кнопку ОК.

Необходимость перезапускать программу каждый раз, когда вы делаете снимок для анимации является не очень удобным решением, поэтому вам следует изменить ее, чтобы она работала в цикле. Однако в отличие от предыдущих циклов, которые вы создавали, этот нуждается в способе корректного закрытия — в противном случае, если вы остановите программу во время отображается превью камеры, вы больше не сможете видеть рабочий стол! Для этого вам нужно воспользоваться двумя специальными инструкциями: try (пытаться) и except (кроме).

Начните с удаления всего, что находится после camera.start_preview (), затем введите:

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

Затем настройте цикл, набрав:

Новая инструкция try сообщает Python запустить любой код, который находится внутри — в нашем случае это будет кодом для захвата изображений. Введите:

В этих трех строках кода есть пара хитрых приемов. Первый находится в имени файла захвата: использование %03d указывает Python взять число и добавить столько нулей в начало, сколько нужно, чтобы получилось три цифры. Таким образом, «1» становится «001», «2» становится «002», а «10» становится «010». Это необходимо для того, чтобы файлы располагались в правильном порядке и чтобы вы не перезаписывали уже сохраненный файл.

% frame в конце этой строки указывает Python использовать номер переменной кадра в имени файла. Чтобы убедиться, что каждый файл уникален, последняя строка:  frame + = 1  увеличивает переменную кадра на 1. При первом нажатии кнопки кадр будет увеличен с 1 до 2; в следующий раз с 2 до 3; и так далее.

Однако на данный момент ваш код не завершится корректно, когда вы закончите делать снимки. Чтобы это произошло, вам понадобится, except (кроме) для вашего try. Введите следующее, не забывая удалить один уровень отступа в первой строке, чтобы Python знал, что это не часть раздела try:

Вся программа должна выглядеть так:

Попробуйте нажать «Выполнить» (Run), но вместо нажатия кнопки нажмите клавиши CTRL и C на клавиатуре. Вам не нужно нажимать обе клавиши одновременно: просто удерживайте CTRL, нажмите и отпустите C, затем отпустите CTRL. Эти два ключа действуют как прерывание, говоря Python, чтобы он остановился. Без строки except KeyboardInterrupt: Python немедленно завершит работу и оставит предварительный просмотр камеры, блокирующий ваш экран; однако с этой строкой Python запускает любой код, который находится внутри — в данном случае код, говорящий ему, что нужно остановить предварительный просмотр камеры и завершить работу.

Теперь вы готовы приступить к съемке покадровой анимации! Расположите модуль камеры так, чтобы он мог видеть объекты, которые вы собираетесь анимировать, и убедитесь, что он не двигается. Если камера двигается или шевелится — это может испортить вашу работу. Поместите ваши объекты в их начальные позиции, затем нажмите «Выполнить» (Run), чтобы запустить программу. Убедитесь, что все выглядит как требуется в предварительном просмотре и нажмите кнопку, чтобы сделать первый кадр.

Слегка переместите объекты — чем меньше вы перемещаете их между кадрами, тем плавнее будет конечная анимация — и снова нажмите кнопку, чтобы захватить другой кадр. Продолжайте делать это, пока ваша анимация не будет закончена: чем больше кадров вы снимете, тем дольше будет длиться анимация.

Когда вы закончите, нажмите CTRL + C, чтобы закрыть программу, затем дважды щелкните папку animation на рабочем столе, чтобы увидеть сделанные вами файлы изображений. Дважды щелкните любое изображение, чтобы открыть его и просмотреть во всех деталях!

Изначально мы говорили об анимации, однако на данный момент всё, что у вас получилось — это папка, полная неподвижных, статических изображений. Чтобы создать анимацию, вам нужно превратить их в видео. Для этого щелкните значок «Малинка» (Пуск), чтобы загрузить главние меню, выберите «Стандартные» (Accessories)  и щелкните «Терминал» (Terminal). При этом откроется интерфейс командной строки (command-line interface), более подробно описанный в статье «Изучаем Raspberry Pi. Дополнение 3. Интерфейс командной строки», который позволяет вам вводить команды в Raspberry Pi. Когда Терминал загрузится, начните с перехода в созданную вами папку, набрав:

Важно, чтобы буква «D» слова «Desktop» была в верхнем регистре; Raspbian очень чувствительна к регистру, что означает, что если вы не введете команду или имя папки в том виде, в котором они были изначально написаны, это не будет работать! После смены папок введите следующее:

При этом используется программа под названием avconv, которая берет неподвижные изображения в папке и конвертирует их в видео под названием animation.h264. В зависимости от того, сколько кадров вы сделали, этот процесс может занять какое-то время и вы узнаете, что видео готово, когда снова увидите приглашение терминала.

Чтобы воспроизвести видео, найдите файл animation.h264 в папке animation и дважды щелкните его, чтобы открыть. Кроме того, вы можете воспроизвести его из Терминала, набрав следующее:

Как только видео загрузится, вы увидите, как оживает ваша покадровая анимация. Поздравляем: вы превратили Raspberry Pi в мощную анимационную студию!

 

Если ваша анимация движется слишком быстро или слишком медленно, измените часть -r 10 команды avconv на меньшее или большее число: это частота кадров или количество неподвижных изображений в одной секунде видео. Чем меньше значение, тем медленнее будет анимация, но она будет выглядеть менее гладкой. Большее число позволяет выглядеть анимации более плавной, но заставляет её проигрываться быстрее.

Если вы хотите сохранить видео, обязательно перетащите его с рабочего стола в папку «Видео»; в противном случае, в следующий раз, когда вы запустите свою программу, вы в конечном итоге перезапишете файл!

 

 

Расширенные настройки камеры

Если вам нужен больший контроль над модулем камеры Raspberry Pi, вы можете использовать библиотеку Python picamera для доступа к различным настройкам. Эти настройки вместе со значениями по умолчанию подробно описаны ниже, а изучив, вы сможете их использовать в ваших собственных программах.

 

Эта настройка устанавливает режим автоматического баланса белого камеры и может быть установлен в любой из следующих режимов: выключен, авто, солнечный свет, облачно, тень, вольфрам, флуоресцентный, лампа накаливания, вспышка или горизонт (сответственно: off, auto, sunlight, cloudy, shade, tungsten, fluorescent, incandescent, flash или horizon). Если вы обнаружите, что ваши фотографии и видео выглядят немного синими или желтыми, попробуйте применить другой режим.

 

Эта настройка устанавливает яркость изображения камеры от самого темного при «0» до самого яркого при «100».

 

Эта настройка изменяет цветовой эффект, используемый камерой. Обычно этот параметр не следует менять, но если вы введете пару чисел, то сможете изменить способ записи цвета камерой. К примеру, попробуйте (128, 128), чтобы создать черно-белое изображение.

 

Эта настройка устанавливает контрастность изображения. Чем больше число, тем более драматичнее и резче выглядят вещи; меньшее число сделает вещи более размытыми. Вы можете использовать любое число от «-100» для минимального контраста до «100» для максимального контраста.

 

Эта настройка позволяет обрезать изображение, отрезая части по бокам и сверху, чтобы захватить только ту часть изображения, которая вам нужна. Числа представляют координату X, координату Y, ширину и высоту и по умолчанию захватывает все изображение. Попробуйте уменьшить последние два числа на «0,5» и «0,5» чтобы увидеть, какое вляние на изображение имеет этот параметр.

 

Эта настройка устанавливает компенсацию экспозиции (exposure compensation) камеры, позволяя вручную контролировать количество света, улавливаемого для каждого изображения. В отличие от изменения яркости, это фактически управляет самой камерой. Допустимые значения варьируются от «-25» для очень темного изображения до «25» для очень яркого изображения.

 

Эта настройка устанавливает режим экспозиции (exposure mode), который модуль камеры использует чтобы решить, как следует экспонировать изображение. Возможные режимы: выключено, авто, ночь, подсветка, прожектор, спорт, снег, пляж, очень длинная, фиксированная частота кадров, антишейк и фейерверк (соответственно: off, auto, night, backlight, spotlight, sports, snow, beach, verylong, fixedfps, antishake и fireworks).

 

Эта настройка устанавливает количество изображений, захваченных для создания видео в секунду, или другими словами — частоту кадров (frame rate). Более высокая частота кадров создает более плавное видео, но занимает больше места для хранения создаваемого файла. Более высокая частота кадров требует использования более низкого разрешения, которое вы можете установить с помощью параметра camera.resolution.

 

Эта настройка переворачивает изображение камеры по горизонтальной оси (оси X), если установлено значение True.

 

Эта настройка применяет к видеопотоку один из эффектов изображения, который будет отображаться в предварительном просмотре, а также в сохраненных изображениях и видео. Возможные эффекты: размытие, мультипликация, цветовой баланс, колорпойнт, смена цветов, деинтерлейсинг1, деинтерлейсинг2, шумоподавление, тиснение, пленка, gpen, штриховка, негатив, нет, масляная краска, пастель, постеризация, насыщенность, эскиз, соляризация, размытие и акварель (соответственно: blur, cartoon, colorbalance, colorpoint, colorswap, deinterlace1, deinterlace2, denoise, emboss, film, gpen, hatch, negative, none, oilpaint, pastel, posterise, saturation, sketch, solarize, washedout и watercolor).

 

Эта настройка изменяет настройку ISO камеры, что влияет на ее чувствительность к свету. По умолчанию камера регулирует ISO автоматически в зависимости от доступного ей света. Вы можете установить ISO самостоятельно, используя одно из следующих значений: 100, 200, 320, 400, 500, 640, 800. Чем выше ISO, тем лучше камера будет работать в условиях низкой освещенности, но тем более зернистым будет изображение или захватываемое видео.

 

Эта настройка влияет на то, как камера определяет количество доступного света при настройке экспозиции. Значение по умолчанию «average» (среднее) усредняет количество света, доступного по всему изображению. Другие возможные режимы — «backlit» (с подсветкой), «matrix» (матричный) и «spot» (точечный).

 

Эта настройка устанавливает разрешение захваченного изображения или видео, представленное двумя числами (для ширины и высоты соответственно). Более низкие разрешения позволят занимать меньше места для хранения, а также использовать более высокую частоту кадров. Более высокое разрешение означает лучшее качество, но занимает больше места для хранения.

 

Эта настройка управляет поворотом изображения от 0 градусов до 90, 180 и 270 градусов. Используйте её, если вы не можете расположить камеру так, чтобы ленточный кабель модуля камеры выходил по направлению вниз.

 

Эта настройка контролирует насыщенность изображения или другими словами — яркость цветов. Возможные значения от «-100» до «100».

 

Эта настройка контролирует резкость изображения. Возможные значения от «-100» до «100».

 

Эта настройка контролирует то, как быстро открывается и закрывается затвор (shutter) при съемке изображений и видео. Вы можете установить выдержку (shutter speed) вручную в микросекундах, при этом более длинные выдержки лучше работают при слабом освещении, а более короткие выдержки — при более ярком. Обычно следует оставить значение по умолчанию — автоматическое («0»).

 

Эта настройка, подобно рассмотренной выше hflip, переворачивает изображение камеры, но по горизонтальной оси (оси Y), если установлено значение True.

 

Если установлено значение True, включается стабилизация видео. Это необходимо только в том случае, если модуль камеры движется во время записи, например, если он прикреплен к роботу или переносится на каком-либо оборудовании, чтобы уменьшить шаткость захваченного видео.

 

Мы рассмотрели основные функции настройки камеры. Более подробную информацию об этих настройках, а также о дополнительных настройках, которые не были рассмотрены здесь, можно найти на сайте библиотеки picamera:  picamera.readthedocs.io.

 

На официальном сайте Raspberry Pi в разделе проектов на Python для модуля камеры вы можете попробовать свои силы в практическом применении своих знаний в программировании на этом языке, а также использования модуля камеры, просто следуя подробным инструкциям, копируя написанный до вас код и проверяя заявленную в проектах функциональность. Вы можете проверить на практике такие проекты, как: съёмка в таймлапс, наложение масок на фотографии в реальном времени, создание объектов для Minecraft и многое другое. Просматривая готовые проекты и пытаясь повторить их у себя на компьютере, вы очень быстро повысите свои знания и навыки работы с Raspberry Pi, внешними модулями и платами расширения. Существует также огромное количество проектов, написанных на других языках программирования, к примеру, Scratch и других. Это сделано для вашего удобства и большей гибкости в применении микрокомпьютеров Raspberry Pi для реализации всевозможных задач в реальном мире.

 

Заканчивая на этом серию статей по обзору Raspberry Pi, хочется сказать, что если вы внимательно прочли их все и на практике проработали приводимые в них задания, то вы только что окончили целый учебный курс по программированию и сборке управляемых компьютером систем и теперь готовы к тому, чтобы придумывать и реализовывать ваши собственные идеи по автоматизации, системам безопасности, наблюдения и контроля, и даже применения технологий искусственного интеллекта — просто запишите вашу идею, разложите её на составляющие части, найдите похожие на её части готовые проекты, изучите их реализацию и коды, а затем просто пересоберите в свой изначальный план все данные, отредактированные под вашу задачу — у вас всё получится!