二维布尔数组到图像

2024-09-29 22:00:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个由布尔值组成的二维数组。对于fromarray模式,模式='1'和模式='L'都不能正常工作。它们都返回一个黑色图像,而索引指向True的位置也应该有白色值。我怎样才能得到正确的图像

    import numpy as np
    from PIL import Image

    maskArr = np.array(arr) * 255

    print(maskArr.shape) # Returns (600, 800)
    print(np.where(maskArr == True)) # Returns a tuple of index of True values.
    maskImg1 = Image.fromarray(maskArr, mode='1')
    maskImg2 = Image.fromarray(maskArr, mode='L')
    maskImg1.save("./maskImg.jpg")
    maskImg2.save("./maskImg2.jpg")

maskImg1

maskImg2


Tags: of图像imageimporttruemodesavenp
1条回答
网友
1楼 · 发布于 2024-09-29 22:00:27

您希望确保maskArr具有数据类型uint8,并将mode='L'传递给PIL:

maskArr = np.array(arr, dtype=np.uint8) * 255

maskImg =  Image.fromarray(maskArr, mode='L')
maskImg.save("./maskImg.jpg")

目前,您的maskArr具有数据类型int64,因此PIL不知道将255视为白色,将0视为黑色

当我使用arr = [[True, False]*100,[False, True]*100]*100运行此代码时,我得到以下输出:

output image

相关问题 更多 >

    热门问题