📷 Камера
take_photo_angles.py
Фотографии при разных углах камеры
camera_examples/take_photo_angles.pyДелает три снимка при углах −25°, 0° и 25°, сохраняя их в jpg-файлы.
Функция take_photo_at_angle(angle) поворачивает сервокамеру, ждёт 3 секунды, получает кадр и сохраняет его в файл photo_angle_<angle>.jpg. Пример последовательно вызывает её для трёх углов.
Как работает
- Создать
Camera()иServoCamera(). - Для каждого угла вызвать
set_angle(angle). - Подождать 3 секунды для поворота.
- Получить кадр
get_cv_frame(timeout=5.0). - Сохранить кадр через
cv2.imwrite. - Остановить камеру
camera.stop().
Используемые методы SDK
Ключевые параметры
| Параметр | Значение | Описание |
|---|---|---|
angles | −25, 0, 25 | Углы съёмки. |
sleep | 3 с | Пауза после поворота. |
timeout | 5.0 с | Ожидание кадра. |
Запуск
cd camera_examples
python3 take_photo_angles.pyРезультат
photo_angle_-25.jpgphoto_angle_0.jpgphoto_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() # останавливаем работу камеры