我在 Python Flask 服务器中有 REST API,它从 POST 请求中获取视频并使用 OpenCV 执行一些情感识别并返回包含情感数据的 JSON 响应。
但是 OpenCV 文档没有提供任何方法来从其字符串表示中读取视频。它需要网络摄像头或 url,但没有提及字符串表示中的视频。
我曾尝试将视频文件保存在我的本地服务器中,然后使用保存的文件来完成我的处理,但这看起来效率不高,因为我们需要为多个用户扩展该功能。
有什么方法可以直接利用视频的字符串表示并逐帧处理它,而不是将其保存到本地并使用它。
下面是我正在努力做到的。
@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,我愿意就替代方案提出建议,只是视频需要逐帧处理。
最佳答案
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
类。
关于python - 如何在 Python 中使用 OpenCV 从 POST 请求加载视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62787179/