Flask フレームワーク アプリでファイルをアップロードしています。このファイルは、OpenCV (in python) で処理したいイメージです。このアップロードされたファイルを最初に HDD に保存すると、全体の操作が遅くなります (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 が実際のファイルを表すオブジェクトだけでなく、任意のファイルのようなオブジェクトで動作できることを前提としています。