[英]How to convert bytes image from grayscale to BGR
我有這個 function 將圖像轉換為字節和從字節轉換為 np.array。
當我傳入灰度圖像時,我經常會遇到以下錯誤。
open_cv_image = np.array(image) IndexError: too many indices for array: array is 2-dimensional, but 3 were indexed
但是當我傳入 RGB 圖像時不會發生錯誤
def read_imagefile(file) -> Image.Image:
image = Image.open(BytesIO(file))
open_cv_image = np.array(image)
print(open_cv_image.shape())
if open_cv_image.shape[-1] > 2:
open_cv_image = open_cv_image[:, :, ::-1].copy() # Convert RGB to BGR
else:
open_cv_image = cv2.merge((open_cv_image, open_cv_image, open_cv_image)).copy() #cv2.cvtColor(open_cv_image, cv2.COLOR_GRAY2BGR)
return open_cv_image
看來你打算這樣做
# this
if len(open_cv_image.shape) > 2:
# instead of this
if open_cv_image.shape[-1] > 2:
但是將灰度圖像轉換為 RGB 的方法是將Image
object 轉換。 並且不要忘記為 function 使用正確的輸入提示。
def read_imagefile(file) -> np.ndarray:
img = Image.open(BytesIO(file))
if img.mode == 'L':
img = img.convert('RGB')
return np.array(img)[...,::-1]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.