簡體   English   中英

如何將字節圖像從灰度轉換為 BGR

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM