将视频数据从一个python脚本传递到另一个



所以我使用的相机模块只有python>3.7支持。我正在尝试用这些数据来做一些机器学习。不幸的是,机器学习模块只支持python<3.7。我想我可以使用python3.8启动一个脚本来抓取视频图像,然后在python 3.6中使用websocket或zmq捕获图像。有更快的方法吗?

解决了以下回复中的建议:

python3.8 video.py | python3.6 ml.py

video.py:

import sys
import numpy as np
import cv2
from PIL import Image
import io
img = cv2.imread('cat.jpeg')
bimg = cv2.imencode('.jpeg',img)[1]
sys.stdout.buffer.write(bimg)

ml.py:

import sys
from PIL import Image
import io
import cv2
import numpy as np
from io import BytesIO 

data = sys.stdin.buffer.read()
img_np = cv2.imdecode(np.frombuffer(BytesIO(data).read(), np.uint8), cv2.IMREAD_UNCHANGED)
cv2.imshow('image', img_np) 
cv2.waitKey(0)  

使用标准的操作系统功能,将视频捕获脚本的输出管道到ML脚本:

$ python3.8 video.py | python3.6 ml.py

您需要在video.py中向stdout写入字节,并在ml.py中从stdin读取字节。