我在Flask框架应用程序中上传文件。这个文件是我想通过OpenCV处理的图像(在python中)。首先将上传的文件保存到HDD,将减慢整个操作(使用OpenCV保存和加载图像的额外时间)。
是否可以直接从Werkzeug FileStorage对象(内存)加载图像?
答案 0 :(得分:2)
编辑:我认为您可以使用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可以处理任意类文件对象,而不仅仅是表示真实文件的对象。