【问题标题】:Numpy create an empty alpha imageNumpy 创建一个空的 alpha 图像
【发布时间】:2020-07-01 12:26:32
【问题描述】:

我想创建一个空白 alpha 图像来解析 py-opencv 中的一些数据并将其保存在透明背景 png 文件中。

我试过了:

blank_image = np.zeros((H,W,4), np.uint8)

blank_image = np.full((H, W, 4) , (0, 0, 0, 0), np.uint8)

(H和W是高度和宽度)

两者仍然呈现黑色背景而不是透明背景。

如何获得空白的alpha透明图片?

提前致谢:)

编辑:

正如 Mark Setchell 所说:您需要在所涉及的其他颜色上指定 Alpha 通道:

# size of the image
(H , W) = 1080, 1080
# Blank image with RGBA = (0, 0, 0, 0)
blank_image = np.full((H, W, 4), (0, 0, 0, 0), np.uint8)
# Green color with Alpha=255
RGBA_GREEN = (0, 255, 0, 255)
# Opencv element using the RGBA color
cv2.putText(blank_image, 'my opencv element', (20 , 20), cv2.FONT_HERSHEY_SIMPLEX, 0.5, RGBA_GREEN, 2)

cv2.imwrite('image_alpha.png', blank_image)

【问题讨论】:

    标签: python arrays numpy opencv transparency


    【解决方案1】:

    您需要使 alpha 通道 = 255 才能看到任何内容。

    import numpy as np
    
    H, W = 128, 256
    blank_image = np.zeros((H,W,4), np.uint8)
    
    # Make first 10 rows red and opaque
    blank_image[:10] = [255,0,0,255]
    
    # Make first 10 columns green and opaque
    blank_image[:,:10] = [0,255,0,255]
    


    您也可以根据需要制作 RGB 图像,然后完全单独创建一个 Alpha 层,然后添加:

    # Make solid red image
    RGB = np.full((H, W, 3) , (255, 0, 0), np.uint8)
    

    # Make a gradient alpha channel, left-to-right, 0..255
    alpha = np.repeat(np.arange(256,dtype=np.uint8)[np.newaxis,:], 128, axis=0)
    

    # Apply alpha to RGB image to yield RGBA image
    RGBA = np.dstack((RGB,alpha))
    

    【讨论】:

      猜你喜欢
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 2020-09-10
      • 1970-01-01
      • 2017-12-28
      • 2021-08-30
      相关资源
      最近更新 更多