Я хочу получать данные (из какого-либо приложения) через python, через сокет UDP-порта и в то же время - я хочу использовать эти данные для рисования на видеофайле, который работает (через OpenCV's VideoCapture '). , чтобы использовать данные в реальном времени для рисования в соответствующем кадре
Надеюсь, мой вопрос был ясен
Короткий код, который я написал для иллюстрации проблемы
- UDP сокет, через который я получаю некоторые данные в режиме реального времени, python:
import socket
import json
import cv2
import numpy as np
import run_video
import threading
import argparse
from VideoGet import VideoGet
UDP_IP = '127.0.0.1'
UDP_PORT = 1234
BUFFER_SIZE = 4024
print (UDP_IP)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind((UDP_IP, UDP_PORT))
full_msg = ''
data = ''
while(True):
#this is the data the i want to use for drawing on the video clip
data = s.recv(BUFFER_SIZE)
json_data = json.loads(data, encoding='utf-8')
if len(data) <= 0:
break
full_msg += data.decode("utf-8")
s.close()
Код openCV для запуска видеофайла в потоке (не уверен, нужен ли поток)
from threading import Thread
import cv2
class VideoFileRun:
def __init__(self, src=0):
self.src = src
def start(self):
Thread(target=self.func, args=()).start()
return
def func(self):
cap = cv2.VideoCapture(self.src)
while cap.isOpened():
(grabbed, frame) = cap.read()
if not grabbed or cv2.waitKey(25) == ord("q"):
break
cv2.imshow("Video", frame)
cap.release()
cv2.destroyAllWindows()
Спасибо!