Python PIL 图片像素提取和统计 - 提取指定颜色像素并计数

该代码使用 Python PIL 库从图像中提取特定颜色像素,并统计每个图像中特定颜色像素的数量。

步骤:

  1. 导入库: 导入 osPIL 库。
  2. 设置路径: 设置输入和输出文件夹路径。
  3. 定义像素值: 定义要提取的像素值 (RGB 格式)。
  4. 循环遍历图片: 遍历输入文件夹中的所有 PNG 图片。
  5. 打开图片: 打开图片并将其转换为 RGB 模式。
  6. 获取像素值: 获取图片的像素值。
  7. 提取指定像素: 提取指定颜色像素。
  8. 保存像素值: 将提取的像素值保存到输出文件夹中的文本文件中。
  9. 统计计数: 统计提取到的特定颜色像素数量。
  10. 保存计数: 将计数结果保存到单独的文本文件中。

代码示例:

import os
from PIL import Image

# 输入文件夹和输出文件夹的路径
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)]

# 循环遍历输入文件夹中的所有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())

        # 提取指定的像素值
        extracted_pixels = [pixel for pixel in pixels if pixel in pixels_to_extract]

        # 将像素值保存到输出文件夹中的文本文件中
        output_path = os.path.join(output_folder, filename.replace('.png', '.txt'))
        with open(output_path, 'w') as file:
            for pixel in extracted_pixels:
                file.write(f'{pixel[0]}, {pixel[1]}, {pixel[2]}
')

        # 统计指定像素值的个数并保存
        count = len(extracted_pixels)
        count_output_path = os.path.join(output_folder, filename.replace('.png', '_count.txt'))
        with open(count_output_path, 'w') as count_file:
            count_file.write(f'Count: {count}')

print('转换完成')

使用方法:

  1. 将代码中的 input_folderoutput_folder 路径替换为你的实际路径。
  2. pixels_to_extract 列表中的 RGB 值替换为你要提取的像素值。
  3. 运行代码,代码将提取指定颜色像素并保存到文本文件,并统计每个图像中特定颜色像素的数量。

注意:

  • 代码示例中提取了四种特定颜色的像素,你可以根据需要修改 pixels_to_extract 列表。
  • 代码假设输入文件夹中只有 PNG 图片。
  • 输出文件夹会被自动创建,如果存在会覆盖原有文件。

更多内容:

Python PIL 图片像素提取和统计 - 提取指定颜色像素并计数

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

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