Python & openCV: как нарисовать клип на основе информации, полученной из другого приложения - PullRequest
0 голосов
/ 15 января 2020

Я хочу получать данные (из какого-либо приложения) через python, через сокет UDP-порта и в то же время - я хочу использовать эти данные для рисования на видеофайле, который работает (через OpenCV's VideoCapture '). , чтобы использовать данные в реальном времени для рисования в соответствующем кадре

Надеюсь, мой вопрос был ясен

Короткий код, который я написал для иллюстрации проблемы

  1. 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()

Спасибо!

...