Python 统计图片像素值数量:从图片提取像素并统计频率
使用 Python 统计图片像素值数量
本代码示例使用 Python 的 PIL 库从图片中提取指定像素值,并统计其在图片中出现的频率。
代码示例:
from PIL import Image
import os
# 输入文件夹和输出文件夹的路径
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())
# 提取指定的像素值
pixels = [pixel for pixel in pixels if pixel in pixels_to_extract]
# 统计每种像素值的数量
pixel_counts = {}
for pixel in pixels:
if pixel not in pixel_counts:
pixel_counts[pixel] = 1
else:
pixel_counts[pixel] += 1
# 将像素值及其数量保存到输出文件夹中的文本文件中
output_path = os.path.join(output_folder, filename.replace('.png', '.txt'))
with open(output_path, 'w') as file:
for pixel, count in pixel_counts.items():
file.write(f'{pixel[0]}, {pixel[1]}, {pixel[2]}: {count}\n')
print('转换完成')
代码功能:
- 读取输入文件夹中的所有 PNG 图片。
- 遍历每张图片的像素值,并提取指定的像素值。
- 使用字典记录每个像素值出现的次数。
- 将每个像素值及其数量保存到输出文件夹中的对应文本文件中。
应用场景:
该代码可以应用于各种需要分析图片像素分布的场景,例如:
- 统计交通路况图片中不同路况颜色的数量
- 分析商品图片中不同颜色出现的频率
- 识别图片中的特定图案或形状
使用说明:
- 确保已安装 PIL 库(
pip install Pillow)。 - 修改代码中的输入文件夹和输出文件夹路径。
- 修改
pixels_to_extract列表,添加需要统计的像素值。 - 运行代码,即可在输出文件夹中生成包含像素值统计结果的文本文件。
示例输出:
180, 0, 0: 100
232, 14, 14: 50
255, 208, 69: 200
79, 210, 125: 150
该输出表明,在该图片中,像素值 (180, 0, 0) 出现了 100 次,像素值 (232, 14, 14) 出现了 50 次,以此类推。
原文地址: https://www.cveoy.top/t/topic/b1AM 著作权归作者所有。请勿转载和采集!