Запись видеопотока с Ровера
Этот код — это пример использования библиотеки OpenCV для Python для захвата видеопотока через RTSP (Real Time Streaming Protocol) и его последующей обработки. Вот подробное описание каждого из его компонентов:
Импорт библиотеки:
import cv2
: импортирует библиотеку OpenCV, которая является одной из основных библиотек для работы с изображениями и видео в Python.
Установка URL RTSP потока:
rtsp_url
: переменная, содержащая URL для доступа к RTSP-потоку видео. В данном случае поток поступает с фронтальной камеры через go2rtc.
Создание объекта VideoCapture:
cap = cv2.VideoCapture(rtsp_url)
: создаёт объектVideoCapture
, который позволяет захватывать видео по указанному URL. Это может быть ссылка на видеофайл, видеопоток или устройство захвата видео.
Проверка доступности видеопотока:
if not cap.isOpened()
: проверяет, удалось ли открыть видеопоток. Если поток не удалось открыть, программа выводит сообщение об ошибке и завершает выполнение.
Настройка кодека и объекта для записи видео:
fourcc
: "Four-character code" для кодирования видеофайлов. Здесь используется кодек XVID.out = cv2.VideoWriter(...)
: создаёт объектVideoWriter
для записи видео в файлoutput.avi
. Указываются параметры, такие как кодек, частота кадров и размеры кадра.
Чтение и обработка кадров в бесконечном цикле:
В цикле
while True
происходит захват кадров из потока:ret, frame = cap.read()
: методread()
возвращает флагret
, указывающий на успех операции, и сам кадрframe
.Если
ret
ложный, выводится сообщение об ошибке, и цикл прерывается.out.write(frame)
: записывает захваченный кадр в файл.cv2.imshow('Frame', frame)
: отображает кадр в окне.
Управление потоком через пользовательский ввод:
if cv2.waitKey(1) & 0xFF == ord('q')
: обрабатывает нажатие клавиши 'q' для выхода из цикла. ФункцияwaitKey
задерживает выполнение на указанное количество миллисекунд, ожидая нажатие клавиши.
Освобождение ресурсов и закрытие окон:
После выхода из цикла освобождаются объекты
cap
иout
, и закрываются все созданные OpenCV окна с помощьюcv2.destroyAllWindows()
.
Этот скрипт можно использовать для мониторинга или записи видеопотоков, а также для обработки видео в реальном времени с помощью дополнительных функций OpenCV. Для работы с кодом необходимо установить библиотеку opencv-python. (pip install opencv-python)
Last updated