📷 Камера get_frames_from_camera.py

Кадры с камеры и RTSP-поток

camera_examples/get_frames_from_camera.py

Бесконечно получает кадры с камеры и публикует их в поток video до Ctrl+C.

Создаёт Camera() и ImageViewer(). В бесконечном цикле получает кадр через get_cv_frame(timeout=5.0) и отправляет его в RTSP-поток video. При Ctrl+C выводится сообщение и ресурсы освобождаются в finally.

Как работает

  1. Создать Camera() и ImageViewer().
  2. В цикле получать кадр camera.get_cv_frame(timeout=5.0).
  3. Если кадр получен — viewer.imshow("video", frame, fps=30).
  4. При KeyboardInterrupt вывести сообщение об остановке.
  5. В finally закрыть поток и остановить камеру.

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

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

ПараметрЗначениеОписание
timeout5.0 сОжидание кадра.
fps30Частота кадров потока.

Запуск

cd camera_examples
python3 get_frames_from_camera.py

Результат

  • RTSP-поток rtsp://10.42.0.1:8889/video/.

Видеопотоки

rtsp://10.42.0.1:8889/video/

Примечания

  • Для выхода нажмите Ctrl+C.

Требования

  • Драйвер камеры gstreamer для работы ImageViewer.

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

Показать get_frames_from_camera.py
from pioneer_sdk2 import Camera, ImageViewer          # импортируем классы Camera и ImageViewer из библиотеки pioneer_sdk2

camera = Camera()                                      # создаем экземпляр класса Camera
viewer = ImageViewer()                                 # создаем экземпляр класса ImageViewer

try:                                                    # основной код находится внутри блока try
    while True:                                         # запускаем бесконечный цикл
        frame = camera.get_cv_frame(timeout=5.0)        # сохраняем изображение в переменную frame
                                                        # timeout=5.0 - время ожидания кадра в секундах

        if frame is not None:                           # проверяем, что изображение получено
            viewer.imshow("video", frame, fps=30)       # отправляем изображение в RTSP-трансляцию

except KeyboardInterrupt:                               # если пользователь остановил программу сочетанием Ctrl+C
    print("Остановка программы")                        # выводим сообщение об остановке программы

finally:                                                # блок finally выполнится при завершении программы
    viewer.close()                                      # останавливаем RTSP-трансляцию
    camera.stop()                                       # закрываем передачу кадров