我在Python服务器中有REST,它从POST请求中获取一个视频,并使用OpenCV执行一些情感识别,并返回一个带有情感数据的JSON响应。
但是OpenCV文档没有提供从其字符串表示中读取视频的任何方法。它要么采取摄像头或网址,但没有提到视频的字符串表示。
我尝试将视频文件保存在本地服务器中,然后使用保存的文件来完成我的处理,但这看起来并不有效,因为我们需要为多个用户扩展该功能。
是否有任何方法直接使用视频的字符串表示和处理它一个帧,而不是保存到本地和使用它。
下面是我要做的事情。
@app.route('/processCapturedVideo', methods = ['POST'])
def processCapturedVideo():
# Read as the video file from post request form data
fileStr = request.files['file'].read()
# Process the video in string format using OpenCV and get the result
return {'data': result}, 200
如果不是OpenCV,我是开放的建议,关于备选方案,只是视频需要处理一个帧。
发布于 2020-07-07 21:32:34
request.files['file']
是Werkzeug.datastructures.filestorage
。
文档可在
https://werkzeug.palletsprojects.com/en/1.0.x/datastructures/#werkzeug.datastructures.FileStorage
我不熟悉OpenCV,但是您应该能够使用上述文档中的FileStorage
流API (即request.files['file'].stream
)。
如果这不起作用(我知道它不适用于ZipFile,因为它需要一个可查找的类似文件的对象),您可以通过它的._file
属性直接访问文件对象,例如request.files['file']._file
。
更新
在再次查看文档( https://docs.opencv.org/2.4/modules/highgui/doc/reading_and_writing_images_and_video.html )并在本地重建上面的应用程序之后,我很遗憾地说,看起来OpenCV
实际上只接受路径或设备进行输入。至少是VideoCapture
类。
https://stackoverflow.com/questions/62787179
复制相似问题