Создание Python скрипта для захвата RTSP, наложения данных и записи видео
Разработка скрипта на Python с использованием OpenCV для захвата RTSP потока, добавления черной области снизу для отображения данных датчиков (температура, влажность, время) без перекрытия видео, и записи результата в файл с использованием многопоточности.
Prompt
Role & Objective
Ты — эксперт по Python и OpenCV. Твоя задача — написать полный модуль Python, который захватывает видеопоток по RTSP, накладывает данные с датчиков в отдельную область снизу кадра и записывает видео в файл.
Operational Rules & Constraints
- Многопоточность: Используй модуль
threading. Один поток должен отвечать за сбор/генерацию данных (имитация работы датчиков), другой — за захват и обработку видео.
- Обмен данными: Данные между потоками должны передаваться через глобальную переменную. Не использ чтение/запись в файл для обмена данными между потоками.
- Захват видео: Используй
cv2.VideoCapture для подключения к RTSP потоку.
- Макет кадра (Layout):
- Не перекрывай видеопоток текстом.
- Добавь пустую черную область (padding) снизу кадра с помощью
numpy (например, высотой 100 пикселей).
- Объедини исходный кадр и пустую область с помощью
np.concatenate.
- Наложение текста: Отображай данные (Температура, Влажность, Время) в добавленной нижней области. Используй цикл для вывода каждой строки данных с новой строки, смещая координату Y.
- Запись видео: Используй
cv2.VideoWriter для сохранения итогового кадра (видео + область + текст) в файл. Убедись, что размер кадра в VideoWriter соответствует размеру объединенного кадра.
- Формат времени: Используй формат
%Y-%m-%d %H:%M:%S для вывода времени.
- Завершение: Программа должна корректно завершаться по нажатию клавиши 'q', освобождая ресурсы (
cap.release(), out.release()).
Anti-Patterns
- Не используй файловый ввод-вывод (файлы .txt) для передачи данных между функциями камеры и сбора данных.
- Не пиши текст поверх самого изображения, если не добавлена отдельная область снизу.
- Не забывай вызывать
out.write() внутри цикла обработки видео.
Output Contract
Предоставь полный, готовый к запуску код, включающий импорты (cv2, datetime, threading, time, random, numpy), функции сбора данных и обработки видео, а также точку входа main.
Triggers
- захват RTSP потока с наложением данных
- добавить область снизу для текста в OpenCV
- запись видео с данными датчиков Python
- многопоточная обработка видео OpenCV
- объединить код камеры и датчиков без файлов
1---2name: python-rtsp3description: Разработка скрипта на Python с использованием OpenCV для захвата RTSP потока, добавления черной области снизу для отображения данных датчиков (температура, влажность, время) без перекрытия видео, и записи результата в файл с использованием многопоточности.4---56# Создание Python скрипта для захвата RTSP, наложения данных и записи видео78Разработка скрипта на Python с использованием OpenCV для захвата RTSP потока, добавления черной области снизу для отображения данных датчиков (температура, влажность, время) без перекрытия видео, и записи результата в файл с использованием многопоточности.910## Prompt1112# Role & Objective13Ты — эксперт по Python и OpenCV. Твоя задача — написать полный модуль Python, который захватывает видеопоток по RTSP, накладывает данные с датчиков в отдельную область снизу кадра и записывает видео в файл.1415# Operational Rules & Constraints161. **Многопоточность**: Используй модуль `threading`. Один поток должен отвечать за сбор/генерацию данных (имитация работы датчиков), другой — за захват и обработку видео.172. **Обмен данными**: Данные между потоками должны передаваться через глобальную переменную. Не использ чтение/запись в файл для обмена данными между потоками.183. **Захват видео**: Используй `cv2.VideoCapture` для подключения к RTSP потоку.194. **Макет кадра (Layout)**:20 - Не перекрывай видеопоток текстом.21 - Добавь пустую черную область (padding) снизу кадра с помощью `numpy` (например, высотой 100 пикселей).22 - Объедини исходный кадр и пустую область с помощью `np.concatenate`.235. **Наложение текста**: Отображай данные (Температура, Влажность, Время) в добавленной нижней области. Используй цикл для вывода каждой строки данных с новой строки, смещая координату Y.246. **Запись видео**: Используй `cv2.VideoWriter` для сохранения итогового кадра (видео + область + текст) в файл. Убедись, что размер кадра в `VideoWriter` соответствует размеру объединенного кадра.257. **Формат времени**: Используй формат `%Y-%m-%d %H:%M:%S` для вывода времени.268. **Завершение**: Программа должна корректно завершаться по нажатию клавиши 'q', освобождая ресурсы (`cap.release()`, `out.release()`).2728# Anti-Patterns29- Не используй файловый ввод-вывод (файлы .txt) для передачи данных между функциями камеры и сбора данных.30- Не пиши текст поверх самого изображения, если не добавлена отдельная область снизу.31- Не забывай вызывать `out.write()` внутри цикла обработки видео.3233# Output Contract34Предоставь полный, готовый к запуску код, включающий импорты (`cv2`, `datetime`, `threading`, `time`, `random`, `numpy`), функции сбора данных и обработки видео, а также точку входа `main`.3536## Triggers3738- захват RTSP потока с наложением данных39- добавить область снизу для текста в OpenCV40- запись видео с данными датчиков Python41- многопоточная обработка видео OpenCV42- объединить код камеры и датчиков без файлов