]要在FastAPI 將NumPy陣列顯示為影像,您有兩個主要選項:
選項1:以位元組形式傳回影像
此方法涉及轉換使用PIL 或OpenCV 函式庫將NumPy數組轉換為字節,然後將位元組作為具有適當標頭的自訂回應傳回。
# Convert NumPy array to bytes using PIL
from PIL import Image
import io
arr = np.zeros((512, 512, 3), dtype=np.uint8) # Sample RGB image
buf = BytesIO()
im = Image.fromarray(arr)
im.save(buf, format='PNG')
im_bytes = buf.getvalue()
# Return bytes as a Response with appropriate headers
from fastapi import Response
headers = {'Content-Disposition': 'inline; filename="test.png"'}
return Response(im_bytes, headers=headers, media_type='image/png')
# 使用 PIL 將 NumPy 陣列轉換為位元組 從 PIL 匯入影像 導入io arr = np.zeros((512, 512, 3), dtype=np.uint8) # 樣本 RGB 影像 buf = 位元組IO() im = Image.fromarray(arr) im.save(buf, format='PNG') im_bytes = buf.getvalue() # 返回位元組作為具有適當標頭的回應 從 fastapi 匯入回應 headers = {'內容處置': '內嵌;檔案名稱=“test.png”'} return Response(im_bytes, headers=headers, media_type='image/png')
# Convert NumPy array to bytes using OpenCV
import cv2
arr = np.zeros((512, 512, 3), dtype=np.uint8) # Sample RGB image
arr = cv2.cvtColor(arr, cv2.COLOR_RGB2BGR)
success, im = cv2.imencode('.png', arr)
# Return bytes as a Response with appropriate headers
from fastapi import Response
headers = {'Content-Disposition': 'inline; filename="test.png"'}
return Response(im.tobytes(), headers=headers, media_type='image/png')
# 使用OpenCV 將NumPy 陣列轉換為字數節 導入CV2 arr = np.zeros((512, 512, 3), dtype=np.uint8) # 樣本 RGB 影像 arr = cv2.cvtColor(arr, cv2.COLOR_RGB2BGR) 成功,im = cv2.imencode('.png', arr) # 返回位元組作為具有適當標頭的回應 從 fastapi 匯入回應 headers = {'內容處置': '內嵌;檔案名稱=“test.png”'} return Response(im.tobytes(), headers=headers, media_type='image/png')
選項2:以JSON 編碼的NumPy 陣列形式傳回影像
不建議將這種方法用於顯示目的,但可以用於資料傳輸。
# Convert NumPy array to bytes using PIL
from PIL import Image
import io
arr = np.zeros((512, 512, 3), dtype=np.uint8) # Sample RGB image
buf = BytesIO()
im = Image.fromarray(arr)
im.save(buf, format='PNG')
im_bytes = buf.getvalue()
# Return bytes as a Response with appropriate headers
from fastapi import Response
headers = {'Content-Disposition': 'inline; filename="test.png"'}
return Response(im_bytes, headers=headers, media_type='image/png')
import numpy as np 導入 json # 將 NumPy 陣列轉換為 JSON 編碼的字串 arr = np.zeros((512, 512, 3), dtype=np.uint8) # 樣本 RGB 影像 json_data = json.dumps(arr.tolist())
import numpy as np
import cv2
import json
# Convert NumPy array to JSON-encoded string
arr = np.zeros((512, 512, 3), dtype=np.uint8) # Sample RGB image
json_data = json.dumps(arr.tolist()).replace('-1', '255')
import numpy as np
導入CV2
導入 json
# 將 NumPy 陣列轉換為 JSON 編碼的字串
arr = np.zeros((512, 512, 3), dtype=np.uint8) # 樣本 RGB 影像
json_data = json.dumps(arr.tolist()).replace('-1', '255')
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3