我正在嘗試為我的 ML/DL 專案收集 img 資料。
我需要面部資料,所以我必須檢測面部并在其周圍進行裁剪。
我有一堆我在網上搜索的 img URL。
通常我會使用請求庫將它們保存在一個檔案中,但是可以在記憶體中進行嗎?
response = requests.get(IMG_URL)
img_byte = response.content
# Do image processing without saving to a file
我在python中查看了一些影像庫,例如PIL或OpenCV,
但他們似乎都首先從檔案中加載影像。
如果我不保存臨時檔案,我想我可以加快這個程序。(I/O是一大瓶頸)
我嘗試使用 BytesIO 函式,但我無法弄清楚。
uj5u.com熱心網友回復:
BytesIO是要走的路!您可以將請求回傳的二進制資料存盤到In-memory byte buffer( BytesIO)并將其傳遞給Image.open
>>> from PIL import Image
>>> from io import BytesIO
>>> img_obj = Image.open(BytesIO(r.content))
Image.openAPI的唯一要求是fp引數必須是檔案名(字串)、pathlib.Path物件或檔案物件。檔案物件必須實作file.read、file.seek和file.tell方法,并以二進制模式打開。
BytesIO 實作所有這些方法。
>>> from io import BytesIO
>>>
>>> buffer = BytesIO()
>>> hasattr(buffer, 'read') and hasattr(buffer, 'tell') and hasattr(buffer, 'seek')
True
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/349123.html
下一篇:代碼未在影像上顯示長軸和短軸
