我正在编写Rest-API函数,该函数应该从发布请求中获取视频,使用OpenCV处理视频并返回文本响应。我被困在从字符串表示形式读取视频的过程中。
我查看了描述如何在OpenCV中读取视频的文档,所有这些文档都是从路径或从网络摄像头读取的。例如,来自imutils的cv2.VideoCapture或FileVideoStream都使用文件路径加载视频。但是,我想避免多余的IO操作,也不想首先将视频写入文件。
我项目中的相关部分:
@app.route('/processvideo', methods = ['POST'])
def process_video():
# read as string
fStr = request.files['file'].read() # file is read as string from the request
npimg = np.fromstring(fStr, np.uint8) # string data is converted to numpy array.
# image = cv2.imdecode(npimg, cv2.IMREAD_COLOR) # this functions doesn't work, because it only takes image, not video.
return jsonify( { 'output': 'test' } )
我正在cli中发送请求以进行测试,如下所示:
curl -F 'file=@demo.mp4' http://localhost:5000/processvideo
我想逐帧处理传入的视频,因此我需要将这些帧作为图像。从现在开始,谢谢您的帮助。