簡體   English   中英

在 Python 中將 RGBA 轉換為 RGB

[英]Convert RGBA to RGB in Python

使用 PIL 將 RGBA 圖像轉換為 RGB 的最簡單、最快的方法是什么? 我只需要從一些圖像中刪除 A 通道。

我找不到一個簡單的方法來做到這一點,我不需要考慮背景。

您可能想使用圖像的轉換方法:

import PIL.Image


rgba_image = PIL.Image.open(path_to_image)
rgb_image = rgba_image.convert('RGB')

numpy數組的情況下,我使用這個解決方案:

def rgba2rgb( rgba, background=(255,255,255) ):
    row, col, ch = rgba.shape

    if ch == 3:
        return rgba

    assert ch == 4, 'RGBA image has 4 channels.'

    rgb = np.zeros( (row, col, 3), dtype='float32' )
    r, g, b, a = rgba[:,:,0], rgba[:,:,1], rgba[:,:,2], rgba[:,:,3]

    a = np.asarray( a, dtype='float32' ) / 255.0

    R, G, B = background

    rgb[:,:,0] = r * a + (1.0 - a) * R
    rgb[:,:,1] = g * a + (1.0 - a) * G
    rgb[:,:,2] = b * a + (1.0 - a) * B

    return np.asarray( rgb, dtype='uint8' )

其中參數rgba是具有 4 個通道的uint8類型的numpy數組。 輸出是一個numpy數組,具有 3 個uint8類型的通道。

這個數組很容易使用imreadimsave與庫imageio進行 I/O。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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