我正在我的 Flask 框架应用程序中上传文件。该文件是我想通过 OpenCV(在 python 中)处理的图像。首先将此上传的文件保存到硬盘,会减慢整个操作(使用 OpenCV 保存和加载图像的额外时间)。
是否可以直接从 Werkzeug FileStorage 对象(内存)加载图像?
编辑:我认为您可以将其FileStorage.stream
用作 OpenCV 逻辑的输入——它是一个类似对象的文件;如果这不起作用,请参见下文。(见werkzeug.datastructures.FileStorage.stream)
由于FileStorage
它本身似乎不是一个类似文件的对象,你可以做的就是save()
把它变成一个:
from cStringIO import StringIO
inmem_file = StringIO()
file_storage.save(inmem_file) # save to memory
inmem_file.reset() # seek back to byte 0, otherwise .read() will return ''
use_with_open_cv(inmem_file)
这是假设 OpenCV 可以处理任意的类文件对象,而不仅仅是代表真实文件的对象。