Телефонуйте » (+38) 096 227 41 41

Серед цікавих доповнень Raspberry Pi є модуль відеокамери, призначений для підключення до шини CSI за допомогою стрічкового кабеля. Сама плата камери крихітна. ЇЇ розміри лише 25x20x9 мм, а важить всього 3 грами і поставляється з 15 см стрічковим кабелем. Датчик камери 5 MP, має об'єктив з фіксованим фокусом і дозволяє отримати нерухомі зображення з дозволом 2592x1944. Підтримка відео: 1080p 30 кадрів в секунду (fps), 720p при 60 fps і дозволом 640x480 зі швидкістю до 90 fps. Повна підтримка камери додана до Raspbian ОС, яку потрібно оновити. Підключається камера через роз’єм на платі RPi:

Програмне забезпечення

З моменту свого створення, камера підтримується в останній версії Raspbian, рекомендованій операційній системі для RPi. Перший крок - це отримати останню версію прошивки RPi, яка підтримує камеру. Ви можете зробити це з консолі командами:

sudo apt-get update
sudo apt-get upgrade

Вам необхідно ввімкнути камеру з програми конфігурації RPi, запустивши:

sudo raspi-config

Виберіть "camera" з програми, а потім виберіть "Enable support for Raspberry Pi camera". Ви повинні перезавантажити, коли буде запропоновано програмою raspi-config. Камера включиться при наступному завантаженні RPi і повинні стати доступними кілька додатків для камери:

rapistill   - захоплення зображення (фотозйомка)
raspivid     - захоплення відео (відеозйомка)
Time-lapse – захоплення зображення через рівні проміжки часу з наступним об’єднанням їх у відео
raspiyuv     – захоплення зображення і його збереження у файлах незжатого формату YUV.

Це програми командного рядка. Розглянемо детальніше роботу з ними.

Використання raspistill

З підключеним і включеним модулем камери, введіть наступну команду в терміналі, щоб зробити знімок:

raspistill -o cam.jpg

Якщо у прикладі камера позиціонує перевернуте зображення, то зображення треба повернути на 180° для правильного відображення. Щоб це зробити, необхідно застосовувати розворот одночасно по вертикалі і по горизонталі, використовуючи ключі -vf і -hf:

raspistill -vf -hf -o cam2.jpg

Роздільна здатність

Як вже зазначалось вище, модуль камери дозволяє робити знімки з роздільною здатністю 2592х1944, що дає змогу отримати 5,038,848 пікселів або 5 мегапікселів.
Для зміни роздільної здатності, тобто режиму (mode), скористуйтеся ключем –md, з вказаним далі числовим значенням, вибраним з наведеної нижче таблиці:

Розмір файлу

Фотографія, зробленій за допомогою модуля камери буде мати розмір близько 2.4MB. Це приблизно в 425 фотографій на 1ГБ. Якщо робити 1 фото в хвилину, то вони займуть 1 Гб за 7 годин. Це близько 144MB за годину або 3.3GB за добу.

Bash-сценарій

Щоб не вводити такий довгий командний рядок щоразу при фотографуванні, ви можете створити сценарій Bash, який буде робити фотографію за допомогою камери. Для цього відкрийте редактор nano і запишіть наступний приклад коду:

#!/bin/bash
DATE=$(date +"%Y-%m-%d_%H%M")
raspistill -vf -hf -o /home/pi/camera/$DATE.jpg

Цей сценарій буде фотографувати і зберігати фото у файлі, назвою якого буде позначка часу.
Ви також повинні переконатися, що існує наведений в програмі шлях, створивши папку camera:

mkdir camera

Збережемо код, наприклад, як camera.sh, а потім зробимо файл виконуваним:

chmod +x camera.sh

Тепер запустимо його з:

./camera.sh

Додаткові параметри

Для отримання повного списку можливих опцій, запустіть raspistill без аргументів. Для прокрутки перенаправте стандартний потік помилок stderr на стандартний вивід stdout і вихідний потік на less:

raspistill 2>&1 | less

Використовуйте клавіші зі стрілками для переміщення, а для виходу натисніть q. Також з додатковими параметрами та прикладами їх використання можна ознакйомитись за посиланням (с.112).

Використання raspivid

За допомогою модуля камери, підключеної і включеної, записуємо відео за допомогою наступної команди:

raspivid -o vid.h264

Не забувайте використовувати -hf і -vf, щоб перевернути зображення, якщо потрібно, як з raspistill.
Буде записано 5 секунд відеофайла, вказаного тут як vid.h264 (проміжок часу за замовчуванням).

Вказуємо тривалість відео

Щоб вказати тривалість знятого відео, додають ключ -t з кількістю мілісекунд. Наприклад:

raspivid -o video.h264 -t 10000

Тепер буде записано 10 секунд відео.

Більше параметрів

Для отримання повного списку можливих опцій, запустіть raspivid без аргументів, або перенаправте цю команду на less і використайте прокручування:

raspivid 2>&1 | less

Використовуйте клавіші зі стрілками для переміщення, а для виходу введіть q.

Використання Time-lapse

Для створення покадрового відео, ви просто налаштуйте RPi, щоб зробити знімок через певний інтервал, наприклад, щохвилини, а потім використайте додаток, щоб зшити разом фотографії у відео. Хорошим способом для автоматизації зйомки через певний інтервал є використання cron.
Відкрийте таблицю cron для редагування:

crontab -e

Буде запитано, який редактор ви хотіли б використовувати, або відкриється в редакторі за замовчуванням. Якщо у редакторі відкриється файл, додайте наступний рядок, щоб запланувати зйомку щохвилини (з посиланням на Bash-сценарiй з raspistill):

* * * * * /home/pi/camera.sh 2>&1

Збережіть і вийдіть - ви повинні побачити повідомлення:

crontab: installing new crontab

Переконайтеся, що ваш сценарій не зберігає кожен знімок з одним і тим же ім'ям, бо це буде перезаписувати знімок щоразу.

Зшиваємо зображення разом

Тепер ви повинні будете зшити фотографії разом, щоб отримати відео.
Ви можете зробити це на RPi, використавши mencoder, але обробка буде повільною. Можна віддати перевагу передаванню файлів зображень на комп'ютер або ноутбук і обробленню відео там.
Перейдіть до папки, що містить всі зображення і запишіть імена файлів в текстовий файл. Наприклад, так:

ls *.jpg > stills.txt

На RPi або іншому комп'ютері Linux

Встановіть пакет mencoder:

sudo apt-get install mencoder

Тепер виконайте наступну команду:

mencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=1920:1080 -o timelapse.avi -mf type=jpeg:fps=24 mf://@stills.txt

Як тільки закінчиться виконання команди, ви повинні отримати відеофайл з ім'ям timelapse.avi, який містить покадрове відео з ваших зображень.

Використання raspiyuv

raspiyuv має той же набір функцій, як raspistill, але замість виведення таких стандартних графічних файлів, таких як .jpg, він генерує вихідні необроблені файли зображень з камери.
Сьогодні доступні три версії «рідних» камер для RPi - звичайна (а), для нічного бачення (б) і «шпигунська» (в):

Майже будь-яка USB-камера, яка підтримується на Linux, також може бути використана з RPi

Використання стандартної USB веб-камери

Якщо ви не маєте модуля камери для RPi, то можна використати звичайну USB веб-камеру. Покажемо, як налаштувати веб-камеру USB на RPi.
Перш ніж почати, перевірте, чи ваша USB веб-камера є однією з тих, про які відомо, що вони сумісні з RPi. Якщо USB веб-камера не знайдена в списку сумісності, не зневіряйтеся, оскільки є ще шанс, що ваша USB веб-камера може бути виявлена RPi.
Щоб перевірити, чи виявлена ваша USB веб-камера на RPi чи ні, підключіть її до USB свого RPi, і введіть в терміналі команду:

lsusb

Якщо після виконання команди не у виведеному списку немає вашої веб-камери, то є ймовірність, що це тому, що ваш RPi має недостатню величину струму на USB, необхідну для веб-камери. У цьому випадку, можете спробувати використати окреме живлення для USB веб-камери, наприклад,  живлення від активного USB-хаба, а потім повторіть команду lsusb.
Ще одним способом перевірити, чи підтримується на RPi ваша USB веб-камера, є перевірка каталогу /dev. Якщо є /dev/video0, то це означає, що ваша USB веб-камера визначається RPi.
Якщо USB веб-камера, як і раніше, не розпізнається, то можемо тільки запропонувати купити іншу USB веб-камеру, яка підтримується RPi.

Встановлення fswebcam

По-перше, необхідно встановити пакет fswebcam:

sudo apt-get install fswebcam

Основи використання

Введіть команду fswebcam з назвою файла і буде зроблений знімок за допомогою веб-камери, який зберігається в файлі, назву якого ви вказали:

fswebcam image.jpg

Ця команда покаже наступну інформацію:

--- Opening /dev/video0...
Trying source module v4l2...
/dev/video0 opened.
No input was specified, using the first.
Adjusting resolution from 384x288 to 352x288.
--- Capturing frame...
Corrupt JPEG data: 2 extraneous bytes before marker 0xd4
Captured frame in 0.00 seconds.
--- Processing captured image...
Writing JPEG image to 'image.jpg'.

Зверніть увагу на невелику роздільну здатність, використану за замовчуванням, і наявність банера, який показує мітку.

Встановлення роздільної здатності

Якщо веб-камера, що використовується, має, наприклад, роздільну здатність 1280 х 720, то, щоб визначити таку роздільну здатність зображення, використайте прапор -r:

fswebcam -r 1280x720 image2.jpg

Зображення буде  збережене із заданою роздільною здатністю веб-камери, але з банером.

Вимкнення банера

Тепер додайте прапор --no-banner:

fswebcam -r 1280x720 --no-banner image3.jpg

Отримаєте зображення з повною роздільною здатністю і без банера.
Зверніть увагу, що якість і можливості модуля камери  RPi значно перевершують стандартну USB веб-камеру.

Завдання. Зробити фото та записати відео з різними параметрами та ефектами.

(За матеріалами EN: raspberrypi.org)

Новини

  • Модуль SMARC запускає Android або Linux на Snapdragon 820
    Модуль SMARC запускає Android або Linux на Snapdragon 820

    SMART 2.0 "Snapdragon 820 SOM" iWave має 3 Гб LPDDR4, 32 Гб eMMC, Wi-Fi та Bluetooth, а також вхідні/вихідні виводи, включаючи GbE, HDMI 2.0, MIPI-CSI, USB 3.0 та PCIe. Комп'ютер розміром 82x50 мм працює на ОС Android Snailbone або вище, з наступною підтримкою Linux. Snapdragon 820 об'єднує чотири 14-нм Cortex з технологією FinFET - два на частоті 2,15 ГГц, а два з 1,6 ГГц, які намагаються імітувати високоякісні Cortex-A72. Крім того, SoC оснащений 624 МГц Adreno 530 GPU, Hexagon 680 DSP і 14-розрядним ISP для Spectra. Snapdragon 820 SOM підтримує кодування H.265 4K@60 та кодування 4K@30.

    in Новини

Записатися на курс