📷 Камера take_photo_angles.py

Фотографии при разных углах камеры

camera_examples/take_photo_angles.py

Делает три снимка при углах −25°, 0° и 25°, сохраняя их в jpg-файлы.

Функция take_photo_at_angle(angle) поворачивает сервокамеру, ждёт 3 секунды, получает кадр и сохраняет его в файл photo_angle_<angle>.jpg. Пример последовательно вызывает её для трёх углов.

Как работает

  1. Создать Camera() и ServoCamera().
  2. Для каждого угла вызвать set_angle(angle).
  3. Подождать 3 секунды для поворота.
  4. Получить кадр get_cv_frame(timeout=5.0).
  5. Сохранить кадр через cv2.imwrite.
  6. Остановить камеру camera.stop().

Используемые методы SDK

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

ПараметрЗначениеОписание
angles−25, 0, 25Углы съёмки.
sleep3 сПауза после поворота.
timeout5.0 сОжидание кадра.

Запуск

cd camera_examples
python3 take_photo_angles.py

Результат

  • photo_angle_-25.jpg
  • photo_angle_0.jpg
  • photo_angle_25.jpg

Примечания

  • Файлы сохраняются в текущую рабочую директорию.

Требования

  • Борт с поддержкой сервопривода камеры.

Полный исходный код

Показать take_photo_angles.py
import time                         # библиотека time нужна для паузы после поворота камеры
import cv2                          # библиотека cv2 нужна для сохранения изображения
from pioneer_sdk2 import Camera     # импортируем класс Camera для получения кадров с камеры
from pioneer_sdk2 import ServoCamera # импортируем класс ServoCamera для поворота камеры


camera = Camera()                   # создаём объект камеры для получения изображения
servo_camera = ServoCamera()        # создаём объект сервокамеры для поворота камеры


def take_photo_at_angle(angle):     # функция поворачивает камеру на нужный угол и сохраняет фото
    servo_camera.set_angle(angle)   # устанавливаем угол поворота камеры

    time.sleep(3)                   # ждём 3 секунды, чтобы камера успела повернуться

    frame = camera.get_cv_frame(timeout=5.0) # получаем один кадр с камеры

    if frame is None:               # проверяем, удалось ли получить кадр
        print(f"Не удалось получить фото при угле {angle}") # выводим сообщение об ошибке
        return                      # выходим из функции, если кадр не получен

    file_name = f"photo_angle_{angle}.jpg" # задаём имя файла для фотографии
    cv2.imwrite(file_name, frame)          # сохраняем кадр в файл

    print(f"Фото сохранено: {file_name}") # выводим сообщение об успешном сохранении


take_photo_at_angle(-25)        # делаем фото при угле камеры -25 градусов
take_photo_at_angle(0)          # делаем фото при угле камеры 0 градусов
take_photo_at_angle(25)         # делаем фото при угле камеры 25 градусов

camera.stop()                   # останавливаем работу камеры