处理二十个文件夹里面多张图片,依次遍历每一个文件夹的第二张起的图片的像素点,把第一张图片像素点为255的标为1,把第二张图片像素点为255的标为2,以此类推,最后写入新建黑色图片的相同位置
时间: 2024-05-16 19:13:02 浏览: 39
批量将文件夹中所有的图片裁剪为统一像素分辨率的图片处理软件.rar
好的,你可以使用Python中的PIL库来实现这个功能。下面是代码示例:
```python
from PIL import Image
import os
# 定义图片宽高
width = 500
height = 500
# 定义标签
labels = [str(i+1) for i in range(20)]
# 定义颜色映射
color_map = {'1': (255, 0, 0), '2': (0, 255, 0), '3': (0, 0, 255), '4': (255, 255, 0), '5': (255, 0, 255),
'6': (0, 255, 255), '7': (128, 0, 0), '8': (0, 128, 0), '9': (0, 0, 128), '10': (128, 128, 0),
'11': (128, 0, 128), '12': (0, 128, 128), '13': (64, 0, 0), '14': (0, 64, 0), '15': (0, 0, 64),
'16': (64, 64, 0), '17': (64, 0, 64), '18': (0, 64, 64), '19': (255, 128, 0), '20': (255, 0, 128)}
# 遍历每个文件夹
for label in labels:
# 初始化标签图片
label_img = Image.new('RGB', (width, height), color=(0, 0, 0))
# 遍历文件夹内的所有图片
for i, img_name in enumerate(os.listdir(label)):
# 跳过第一张图片
if i == 0:
continue
# 打开图片
img_path = os.path.join(label, img_name)
img = Image.open(img_path)
# 遍历像素点,将255的像素标记为标签
for x in range(width):
for y in range(height):
r, g, b = img.getpixel((x, y))
if r == g == b == 255:
label_img.putpixel((x, y), color_map[str(i)])
# 保存标签图片
label_img.save(f'{label}.png')
```
这段代码会遍历当前目录下的20个文件夹(分别命名为1、2、3、...、20),然后依次处理每个文件夹中的图片。对于每个图片,它会遍历其中的像素点,如果某个像素的RGB值为(255, 255, 255),则说明这个像素在原图片中是白色的,也就是说这是一个需要标记的像素。根据当前处理的图片是第几张,将该像素标记为对应的标签(1、2、3、...、20)。最后,将标记的结果保存为一张新的黑色图片,并以当前文件夹名命名。
阅读全文