自定义批量修改图像位深度

什么是图像位深度???

图像位深度(Bit Depth)是指图像中每个像素所占的比特数,它决定了图像能够表示的颜色数量和亮度层级。

简单来说:

  • 位深度越高,每个像素所能表示的颜色数和亮度等级越多。
  • 位深度越低,每个像素所能表示的颜色数和亮度等级越少。
    位深度直接影响图像的质量和细节表现能力。
    常见的图像位深度有:
  • 1位: 仅有黑和白两色,用于文字识别等简单图像。
  • 8位: 256级灰度,能表示256种亮度等级,用于灰度图像。
  • 24位: 真彩色,R、G、B每个颜色8位,共表示约1600万种颜色。大多数彩色图片采用这种位深度。
  • 32位: 在24位基础上增加Alpha通道表示透明度。
  • 48位及以上: 高动态范围(HDR)图像常采用,可以表示更多颜色和更广阔的亮度范围。

如下想要将位深度为1的图像转为位深度为8的图像,原图像如下所示:

在这里插入图片描述

具体修改方法见下:

在这里插入图片描述

在这里插入图片描述

代码见下:

from PIL import Image
import os

path = "data/INF_People/VOC_Images"                 # 原始1位像素图像文件路径
save_path = "data/INF_People/VOC_Images_Sort"       # 转后保存的路径

files = os.listdir(path)

for pic in files:
    img = Image.open(os.path.join(path, pic)).convert('L')
    print(img.getbands())  # ('P',) 这种是有彩色的,而L是没有彩色的

    pic_new = os.path.join(save_path, pic)

    img.save(pic_new)


下面是修改后的样纸:

在这里插入图片描述

下面是转换后适用于语义分割的的转换代码:

from PIL import Image
import os
import numpy as np

path = "data/INF_People_original/VOC_Images"                 # 原始1位像素图像文件路径
save_path = "data/INF_People_original/VOC_Images_Sort_P"       # 转后保存的路径

files = os.listdir(path)

for pic in files:
    img = Image.open(os.path.join(path, pic)).convert('P')
    print(img.getbands())  # ('P',) 这种是有彩色的,而L是没有彩色的

    # img = Image.open(os.path.join(root_path, name)).convert('P')
    img = np.array(img, dtype=np.uint8)
    img[img > 0] = 1    # 图像img进行处理,将其中所有大于0的像素值设置为1。
    save_img = Image.fromarray(img, "P")   # Image.formarray() 将数组转换为PIL Image对象
    # save_img.save(os.path.join(root_path1, name))


    pic_new = os.path.join(save_path, pic)

    save_img.save(pic_new)

以上就是自定义批量修改图像位深度的方法,具
体要修改为多少位深度,根据对应代表字符修改即可,谢谢!

猜你喜欢

转载自blog.csdn.net/qq_40280673/article/details/132279856