Пост

Захват изображений с помощью веб-камеры на Raspberry Pi

Утилита fswebcam предоставляет простой и эффективный способ захвата изображений с веб-камер USB через командную строку Raspberry Pi. Этот инструмент особенно полезен для быстрого тестирования работы камеры, создания систем видеонаблюдения и автоматизации процессов захвата изображений без необходимости написания сложного программного кода на Python или других языках программирования.

Захват изображений с помощью веб-камеры на Raspberry Pi

Введение

Утилита fswebcam предоставляет простой и эффективный способ захвата изображений с веб-камер USB через командную строку Raspberry Pi. Этот инструмент особенно полезен для быстрого тестирования работы камеры, создания систем видеонаблюдения и автоматизации процессов захвата изображений без необходимости написания сложного программного кода на Python или других языках программирования.

Установка fswebcam

Для начала работы необходимо установить утилиту fswebcam через менеджер пакетов apt:

1
2
sudo apt update
sudo apt install fswebcam

После успешной установки можно проверить доступность команды:

1
fswebcam --version

Основной синтаксис команды

Базовый синтаксис команды fswebcam:

1
fswebcam [параметры] <выходной_файл>

Ключевые параметры fswebcam

Разрешение изображения:

1
2
3
4
5
6
7
# Установка конкретного разрешения
fswebcam -r 1280x720 image.jpg

# Стандартные разрешения
fswebcam -r 640x480 image_small.jpg    # VGA
fswebcam -r 1280x720 image_hd.jpg      # HD
fswebcam -r 1920x1080 image_fullhd.jpg # Full HD

Управление баннером (водяным знаком):

1
2
3
4
5
6
7
8
# Захват без баннера (рекомендуется)
fswebcam -r 1280x720 --no-banner image_clean.jpg

# Захват с баннером (по умолчанию)
fswebcam -r 1280x720 image_with_banner.jpg

# Настройка баннера
fswebcam --title "Моя камера" --subtitle "$(date)" --info "Raspberry Pi" image_custom.jpg

Управление качеством изображения:

1
2
3
4
5
6
7
8
# Установка качества JPEG (1-100, по умолчанию 80)
fswebcam -q 95 image_high_quality.jpg

# Пропуск кадров для стабилизации
fswebcam -S 10 image_stable.jpg

# Задержка перед захватом (секунды)
fswebcam -D 2 image_delayed.jpg

Выбор устройства камеры

При наличии нескольких камер можно указать конкретное устройство:

1
2
3
4
5
6
# Просмотр доступных устройств
ls /dev/video*

# Захват с конкретного устройства
fswebcam -d /dev/video0 image_cam0.jpg
fswebcam -d /dev/video1 image_cam1.jpg

Форматы выходных файлов

Fswebcam поддерживает различные форматы изображений:

1
2
3
4
5
6
7
8
9
# JPEG (по умолчанию)
fswebcam image.jpg

# PNG
fswebcam image.png

# Спецификация формата в имени файла
fswebcam output.jpeg
fswebcam output.gif  # Анимированный GIF (требует дополнительных параметров)

Полный пример с множеством параметров

Комплексная команда с настройкой всех основных параметров:

1
2
3
4
5
6
7
8
9
10
11
fswebcam \
  -d /dev/video0 \          # Устройство камеры
  -r 1920x1080 \           # Разрешение
  -q 90 \                  # Качество JPEG
  -S 5 \                   # Пропустить 5 кадров
  -D 1 \                   # Задержка 1 секунда
  --no-banner \            # Без водяного знака
  --save ~/capture.jpg \   # Путь сохранения
  --rotate 180 \           # Поворот на 180 градусов
  --set brightness=50% \   # Яркость
  --set contrast=20%       # Контрастность

Просмотр доступных настроек камеры

Для настройки параметров камеры можно использовать:

1
2
3
4
5
# Просмотр всех доступных настроек
fswebcam --list-controls

# Установка конкретных параметров
fswebcam --set brightness=65% --set saturation=80% image_adjusted.jpg

Доступные настройки обычно включают:

  • brightness - яркость
  • contrast - контрастность
  • saturation - насыщенность
  • hue - оттенок
  • gamma - гамма-коррекция
  • gain - усиление
  • sharpness - резкость

Пакетный захват изображений

Создание нескольких изображений с разными настройками:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
# batch_capture.sh

TIMESTAMP=$(date +%Y%m%d_%H%M%S)

# Разные разрешения
fswebcam -r 640x480 --no-banner ~/capture_${TIMESTAMP}_640x480.jpg
fswebcam -r 1280x720 --no-banner ~/capture_${TIMESTAMP}_1280x720.jpg
fswebcam -r 1920x1080 --no-banner ~/capture_${TIMESTAMP}_1920x1080.jpg

# Разные качества
fswebcam -q 50 --no-banner ~/capture_${TIMESTAMP}_quality50.jpg
fswebcam -q 80 --no-banner ~/capture_${TIMESTAMP}_quality80.jpg
fswebcam -q 95 --no-banner ~/capture_${TIMESTAMP}_quality95.jpg

echo "Захват завершен"

Документация и справка

Для получения полной информации о всех параметрах:

1
2
3
4
5
6
7
8
# Краткая справка
fswebcam --help

# Полная документация
man fswebcam

# Информация о конкретном параметре
fswebcam --long-help

Типичные проблемы и решения

Проблема: Ошибка “Cannot find device /dev/video0” Решение: Проверить подключение камеры командой ls /dev/video* и права доступа ls -la /dev/video*

Проблема: Изображение слишком темное или светлое Решение: Использовать параметры настройки: --set brightness=XX% --set contrast=XX%

Проблема: Низкая частота кадров при последовательном захвате Решение: Добавить задержку между захватами и пропускать кадры: -D 2 -S 5

Проблема: Размытое изображение при движении Решение: Увеличить параметр пропуска кадров: -S 15 для стабилизации

Проблема: Ограничения прав доступа Решение: Добавить пользователя в группу video: sudo usermod -a -G video $USER

Утилита fswebcam предоставляет мощный и гибкий инструмент командной строки для работы с веб-камерами на Raspberry Pi. Благодаря богатому набору параметров настройки, она позволяет контролировать все аспекты захвата изображения - от базовых параметров разрешения и качества до продвинутых настроек обработки изображений. Это делает fswebcam идеальным решением как для быстрого тестирования оборудования, так и для создания сложных автоматизированных систем захвата изображений.

Авторский пост защищен лицензией CC BY 4.0 .

© evdokimoff. Некоторые права защищены.

Использует тему Chirpy для Jekyll