Коничива, уважаемый!

За время вашего отсутствия мы тут вон чего понаписали:

    Работа с камерой Raspberry Pi (часть 1) - Time-lapse

    25 Февраля

    Камеру вполне можно считать одним из наиболее интересных аксессуаров для Raspberry Pi. Помимо того, что устройство умеет работать с USB-камерами, официальный производитель "малинки" выпускает две модели - RaspiCam и NoIR Camera, подключающиеся к специальному разъёму на плате. Камеры абсолютно идентичны, за одним небольшим исключением: в модели NoIR отсутствует инфракрасный фильтр. Последний устанавливается во все потребительские фото и видеокамеры для того, чтобы получаемая матрицей картинка соответствовала той, которую получает наш глаз. Без этого фильтра многие объекты теряют свой цвет (например, Кока-Кола становится прозрачной), а горячие - светятся, как раскалённые. Много примеров можно найти здесь, а для себя уясним, что NoIR нужна только для охранных систем (в паре с инфракрасными прожекторами) и неутомимых экспериментаторов.

    Установка и настройка

    Перед началом установки камеры, посмотрите официальную видеоинструкцию, там есть нюанс с зажимом. Там же описано, как включить камеру в настройках устройства. Ещё неплохо было бы отключить "демаскирующий" красный светодиод на камере. Для этого нужно открыть файл настроек

    sudo nano /boot/config.txt

    и добавить в него следующую строку:

    disable_camera_led=1

    Всё, после перезагрузки устройства светодиод больше не напомнит о себе.

    Работа

    Камера для Raspberry Pi по своим параметрам вполне сравнима с камерой смартфона среднего класса: 5MP для фото и Full HD для видео, без автофокуса, зума и прочих стабилизаторов. Кстати, кому интересно, тут есть сравнения камеры "малинки" с некоторыми мобильными телефонами. Тем не менее, спектр настроек этой камеры впечатлит даже заядлых фотографов. В Raspbian есть три очень мощных утилиты для работы с камерой: raspistill, raspivid и raspistillyuv. При их помощи можно много чего делать интересного, главное не брезговать документацией. Например, можно снимать time-lapse.

    Time-lapse

    Не буду объяснять что это такое, за меня это лучше сделает Википедия, а мы сразу приступим. Для начала нужно создать папку для снимков (например, timelapse) и зайти в неё:

    mkdir timelapse
    cd timelapse

    Теперь надо запустить процесс интервальной фотосъёмки с сохранением снимков в этой папке. Да, не пугайтесь, мы снимаем фотографии, а потом соберём из них видеоролик.

    raspistill -o a%04d.jpg -t 86400000 -tl 120000 &

    Рассмотрим подробнее использованные настройки:

    • -o a%04d.jpg - автоматическая генерация имени файлов. Будет выглядеть так: a0001.jpg, a0002.jpg, a0003.jpg и т.д.
    • -t 86400000 - общая продолжительность съёмки в миллисекундах, в данном случае одни сутки
    • -tl 120000 - интервал между кадрами в миллисекундах, в данном случае две минуты
    • символ & в конце строки запустит съёмку в фоновом режиме

    Также можно организовать съёмку через cron, тогда она будет "вечной". Подробнее об этом тут и тут.

    После того, как съёмка завершена, самое время делать видео. Для этого сначала необходимо создать текстовой файл со списком всех кадров-фотографий:

    cd timelapse
    ls *.jpg > stills.txt

    Теперь нужно установить приложение MEncoder и запустить "склейку":

    sudo apt-get install mencoder -y
    mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=4/3:vbitrate=80000 -vf scale=1296:972,flip,mirror -o timelapse.avi -mf type=jpeg:fps=20 mf://@stills.txt

    Данный пример кодирует видео без звука кодеком mpeg4 (библиотека libavcodec) с частотой 20 кадров/сек, соотношением сторон 4:3 и разрешением 1296x972 (половина от максимального разрешения камеры 2592x1944). Картинка развёрнута по вертикали и горизонтали, потому что камера была закреплена вверх ногами. Битрейт видео специально указан заоблачный - 80 Мбит/сек, так как кодировщик сам "выжмет максимум" из исходных фотографий. Например, видео из примера выше получилось с битрейтом 7647 Кбит/сек. Учитывая невысокую аппаратную мощность видео из примера, состоящее из пятиста с небольшим кадров, на Raspberry Pi B+ делается чуть менее получаса. Ниже список ключей и фильтров MEncoder. Наиболее полезными будут именно фильтры.

    Ключи MEncoder

    • -ovc help - Список всех доступных видео кодеков
    • -oac help - Список всех доступных аудио кодеков
    • -vf help - Список всех доступных аудио/видео фильтров
    • -of help - Список всех доступных выходных форматов
    • -ss - Начальное время кодирования
    • -endpos - Конечное время кодирования
    • -mc - Максимальная величина корректировки A-V синхронизации на один кадр
    • -noskip - Запрет на пропускание кадров. Помогает при рассинхроне
    • -novideo - Отключение видео
    • -nosound - Отключение звука
    • -nosub - Отключение субтитров
    • -ovc copy - Копирование видео (сохранение без изменений)
    • -oac copy - Копирование звука (сохранение без изменений)
    • -ofps - Количество кадров в секунду
    • -aid - Порядковый номер кодируемой аудиодорожки (по умолчанию 0)
    • -alang - Язык кодируемой аудиодорожки (две буквы для DVD и три для MKV)
    • -sid - Порядковый номер субтитров
    • -slang - Язык субтитров
    • -subcp - Кодировка субтитров

    Фильтры MEncoder

    Фильтры указываются через запятую, после ключа -vf

    • -vf =help - Получаем справку по фильтру (если она есть)
    • crop=w:h:x:y - Обрезаем изображение до указанного размера, отбрасывая остальное. Начальная позиция обрезаемого изображения, по умолчанию, в центре
    • scale=w:h - Масштабируем изображение
    • dsize=w:h - Задаем размер/пропорции отображаемого видео (не путать с размером кадра). Фильтр сам по себе ничего не делает, он всего лишь указывает как масштабировать дальше
    • rotate=0 - Поворот на 90 градусов по часовой стрелке и отражение (по умолчанию)
    • rotate=1 - Поворот на 90 градусов по часовой стрелке
    • rotate=2 - Поворот на 90 градусов против часовой стрелки
    • rotate=3 - Поворот на 90 градусов против часовой стрелки и отражение
    • flip - Зеркально отражаем изображение по вертикали
    • mirror - Зеркально отражаем изображение по горизонтали
    • harddup - Дублирующиеся кадры будут принудительно кодироваться на выходе. Необходим, если вы после кодирования планируете редактировать видеофайл. Следует размещать в самом конце списка фильтров

    Пример timelapse-видео

    Автор: Lentyay
    
    Виктор Линьков
    2017-04-26 14:02:52
    Не знаете ли как сравнить 2а фото на стационарном компьютере (у меня стоит ubuntu) чтобы не загружать процессор распберри ПО motion ?
    Гость
    2016-10-26 15:18:37
    Товарищи !

    А как поднастроить юсб камеру , чтобы также получать фото в ответ на photo ? Камера подключена по Юсб и по команде luvcview -s 640x480 -i 30 изображение показывает. Но при команде raspistill -w 640 -h 480 -o /home/pi/camera/photo.jpg идет ошибка:
    mmal: Cannot read cameara info, keeping the defaults for OV5647

    ...

    mmal: Camera is not detected. Please check carefully the camera module is installed correctly

    Заранее благодарю !
    Lentyay
    2016-10-26 15:32:44
    Сам не пробовал, может это поможет.
    Dmitriy
    2016-06-19 16:42:55
    а где часть 2?
    Lentyay
    2016-06-19 19:30:29

    Оставить комментарий

    captcha
    RSS