我想將我的影像目錄存盤在記憶體中,然后將影像加載到一個 numpy 陣列中。
加載不在記憶體中的影像的規范方法如下:
import PIL.Image
import numpy as np
image = PIL.Image.open("./image_dir/my_image_1.jpg")
image = np.array(image)
但是,當影像在記憶體中時,我不確定如何執行此操作。到目前為止,我已經能夠設定以下啟動代碼:
import fs
import fs.memoryfs
import fs.osfs
image_dir = "./image_dir"
mem_fs = fs.memoryfs.MemoryFS()
drv_fs = fs.osfs.OSFS(image_path)
fs.copy.copy_fs(drv_fs, mem_fs)
print(mem_fs.listdir('.'))
回報:
['my_image_1.jpg', 'my_image_2.jpg']
如何將記憶體中的影像加載到 numpy 中?
我也對 fs 包的替代品持開放態度。
uj5u.com熱心網友回復:
根據檔案,PillowImage.open接受檔案物件而不是檔案名,因此只要您的記憶體檔案包提供 Python 檔案物件(它很可能提供),您就可以使用它們。如果沒有,您甚至可以將它們包裝在提供所需方法的類中。假設您正在使用PyFilesystem,根據其檔案,您應該沒問題。
所以,你想要這樣的東西:
import numpy as np
import PIL.Image
import fs.memoryfs
import fs.osfs
import fs.copy
mem_fs = fs.memoryfs.MemoryFS()
drv_fs = fs.osfs.OSFS("./image_dir")
fs.copy.copy_file(drv_fs, './my_image_1.jpg', mem_fs, 'test.jpg')
with mem_fs.openbin('test.jpg') as f:
image = PIL.Image.open(f)
image = np.array(image)
(注意我剛剛使用copy_file,因為我用單個檔案進行測驗,copy_fs如果需要復制整個樹,可以使用 - 原理相同)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/424178.html
上一篇:numpy向量化(累積變數)
