ФАЙЛ "VIDEO_PROCESSING.PY"

Файл video_processing.py представляет собой мощный инструмент для работы с сетевыми соединениями и асинхронной обработкой данных. Он позволяет взаимодействовать с серверами для получения данных маркеров ArUco, данных RealSense и детекций YOLO, что необходимо для эффективной обработки информации и управления робототехникой. Каждый класс выполняет конкретные сетевые операции, обеспечивая необходимую функциональность для разработки автономных систем.

ИНИЦИАЛИЗАЦИЯ БИБЛИОТЕК

import asyncio
import json
import os
import re
import socket
import subprocess
import sys
import threading
import time
import cv2
import cv2.aruco as aruco
import logging
from ultralytics import YOLO

logging.basicConfig(level=logging.INFO)

# Инициализация модели YOLO
model = YOLO("yolov8n")
  1. asyncio: Этот модуль предоставляет поддержку асинхронного ввода-вывода, циклов событий, сопрограмм и задач. Он используется для написания однопоточного параллельного кода с использованием сопрограмм, мультиплексирования доступа к вводу-выводу через сокеты и другие ресурсы, запуска сетевых клиентов и серверов, а также других связанных примитивов.

  2. json: Этот модуль предоставляет функции для кодирования объектов Python в формат JSON и декодирования JSON-строк в объекты Python. Он широко используется для обмена данными между приложениями.

  3. os: Этот модуль предоставляет способ использования функциональности, зависящей от операционной системы. Он включает функции для взаимодействия с файловой системой, управления переменными окружения и контроля процессов.

  4. re: Этот модуль предоставляет поддержку регулярных выражений. Он используется для поиска, сопоставления и манипулирования текстом на основе шаблонов.

  5. socket: Этот модуль предоставляет низкоуровневые сетевые интерфейсы, позволяющие осуществлять сетевое взаимодействие через сокеты.

  6. subprocess: Этот модуль позволяет порождать новые процессы, подключаться к их каналам ввода/вывода/ошибок и получать их коды возврата.

  7. sys: Этот модуль предоставляет доступ к некоторым переменным, используемым или поддерживаемым интерпретатором, а также к функциям, которые сильно взаимодействуют с интерпретатором.

  8. threading: Этот модуль строится на низкоуровневых возможностях потоков, чтобы сделать работу с потоками еще проще и более питоничной.

  9. time: Этот модуль предоставляет различные функции, связанные со временем.

  10. cv2: Это библиотека OpenCV, которая используется для задач компьютерного зрения, таких как обработка изображений и видео, обнаружение объектов и отслеживание.

  11. cv2.aruco: Это подмодуль OpenCV, который предоставляет инструменты для работы с маркерами Aruco, часто используемыми в робототехнике и дополненной реальности.

  12. logging: Этот модуль предоставляет гибкую систему логирования для приложений и библиотек.

  13. ultralytics.YOLO: Это, вероятно, модуль из библиотеки Ultralytics, который предоставляет реализацию модели YOLO (You Only Look Once) для обнаружения объектов в реальном времени.

ИНИЦИАЛИЗАЦИЯ КЛАССА Connect_aruco

Здесь IP и PORT — это параметры, которые используются для установления соединения с сервером. RTSP — это адрес потока, используемый для обработки данных. Эти параметры передаются при создании объекта класса, чтобы затем получать и обрабатывать данные с сервера.

МЕТОД ОСТАНОВКИ (в классе Connect_aruco)

Метод stop завершает соединение и остановливает все запущенные процессы и потоки.

МЕТОД АСИНХРОННОЙ ЗАДАЧИ (в классе Connect_aruco)

Метод async_task обрабатывает входящие соединения и принимает данные от клиентов асинхронно.

МЕТОД ОБНАРУЖЕНИЯ ARUCO (в классе Connect_aruco)

Метод aruco_detect обрабатывает данные от сервера, связанные с маркерами ArUco, асинхронно, возвращая их после ожидания.

ИНИЦИАЛИЗАЦИЯ КЛАССА Realsense

Здесь IP и PORT — это параметры, которые используются для установления соединения с сервером. Эти параметры передаются при создании объекта класса для получения данных.

МЕТОД ПОЛУЧЕНИЯ ДАННЫХ (в классе Realsense)

Метод receive_data принимает данные от сервера через сокет и возвращает их в виде строки.

МЕТОД ВОЗВРАТА ДАННЫХ (в классе Realsense)

Метод give_mass получает данные от сервера и возвращает их в виде объекта.

ИНИЦИАЛИЗАЦИЯ КЛАССА Connect_yolo

Здесь IP и PORT — это параметры, которые используются для установления соединения с сервером. RTSP — это адрес потока, используемый для обработки данных YOLO. Эти параметры передаются при создании объекта класса для получения и обработки данных с сервера.

МЕТОД ОСТАНОВКИ (в классе Connect_yolo)

Метод stop завершает соединение и останавливает все запущенные процессы и потоки.

МЕТОД АСИНХРОННОЙ ЗАДАЧИ (в классе Connect_yolo)

Метод async_task обрабатывает входящие соединения и принимает данные от клиентов асинхронно.

МЕТОД ОБНАРУЖЕНИЯ YOLO (в классе Connect_yolo)

Метод yolo_detect обрабатывает данные от YOLO сервера асинхронно, возвращая их после ожидания.

Процесс подготовки кода:

  1. Создайте файл и назовите его video_processing.py

Файл video_processing.py в окне иерархии
  1. Поэтапно копируйте код в файл

  1. Скачайте недостающие библиотеки: в данном случае не предустановлены следующие библиотеки: cv2 и ultralytics. Если эти библиотеки у вас не установлены, выполните следующие действия:

    1. Откройте терминал VS Code (Terminal -> New Termial или комбинацией Ctrl + Shift + `)

    2. В терминале поочередно введите и запустите следующие команды: pip install ultralytics; pip install opencv-python

Последнее обновление