该代码使用 Python PIL 库和 os 库进行图像处理和文件操作。它从一个文件夹中读取 PNG 图像,提取指定的像素值,并将每个像素值保存到输出文件夹的文本文件中。同时,它还统计了每个图像中各种指定像素值的数量,并将结果保存到输出文件夹的统计文件中。

首先,定义了输入文件夹和输出文件夹的路径。然后,确保输出文件夹存在。接下来,定义了要提取的像素值列表。

使用 defaultdict(int) 创建了一个像素值计数的字典。然后,循环遍历输入文件夹中的所有 PNG 图片。如果文件名以'.png' 结尾,就打开该 PNG 图片并将其转换为 RGB 模式。然后,获取图片的像素值并保存到一个列表中。

将所有像素值保存到输出文件夹中的文本文件中。文件名与输入文件名相同,只是扩展名从'.png' 替换为'.txt'。将像素值逐行写入文件。

同时,对每个像素值进行计数,并将计数保存在像素值计数字典中。

最后,将每种像素值的个数保存到输出文件夹中的统计文件中。文件名为'pixel_counts.txt'。将像素值和计数逐行写入文件。

最后,输出'转换完成' 表示处理完成。

请注意,在使用代码之前,需要安装 PIL 库。

from PIL import Image
import os
from collections import defaultdict

# 输入文件夹和输出文件夹的路径
input_folder = r'C:\Users\jh\Desktop\data\images_block'
output_folder = r'C:\Users\jh\Desktop\data\images_flatten'

# 确保输出文件夹存在
if not os.path.exists(output_folder):
    os.makedirs(output_folder)

# 定义要提取的像素值
pixels_to_extract = [(180, 0, 0), (232, 14, 14), (255, 208, 69), (79, 210, 125)]  # 严重拥堵,拥挤,缓行,畅通

# 统计每个像素值的个数
pixel_counts = defaultdict(int)

# 循环遍历输入文件夹中的所有 PNG 图片
for filename in os.listdir(input_folder):
    if filename.endswith('.png'):
        input_path = os.path.join(input_folder, filename)
        
        # 打开 PNG 图片并将其转换为 RGB 模式
        image = Image.open(input_path).convert('RGB')
        
        # 获取图片的像素值
        pixels = list(image.getdata())
        
        # 将所有像素值保存到输出文件夹中的文本文件中
        output_path = os.path.join(output_folder, filename.replace('.png', '.txt'))
        with open(output_path, 'w') as file:
            for pixel in pixels:
                file.write(f'{pixel[0]}, {pixel[1]}, {pixel[2]}
')
                pixel_counts[pixel] += 1

# 将每种像素值的个数保存到输出文件夹中的统计文件中
statistic_path = os.path.join(output_folder, 'pixel_counts.txt')
with open(statistic_path, 'w') as file:
    for pixel, count in pixel_counts.items():
        file.write(f'{pixel[0]}, {pixel[1]}, {pixel[2]}: {count}
')

print('转换完成')
Python PIL 图像像素提取与统计 - 提取特定颜色并计数

原文地址: https://www.cveoy.top/t/topic/b1TI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录