Python代码分析:统计PNG图片中指定像素值的出现次数
这段代码使用Python和PIL库来统计PNG图片中指定像素值的出现次数。
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)]
pixel_counts = {pixel: 0 for pixel in pixels_to_extract}
# 初始化像素值计数器
# 循环遍历输入文件夹中的所有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]
# 统计每张图片不同像素值的数量
for pixel in extracted_pixels:
pixel_counts[pixel] += 1
# 将像素值保存到输出文件夹中的文本文件中
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]}\n')
print('转换完成')
print('每张图片不同像素值的数量:')
for pixel, count in pixel_counts.items():
print(f'{pixel}: {count}')
代码中,pixel_counts字典保存了每个指定像素值在所有图片中出现的总次数,而不是每张图片中的次数。
如果你想统计每张图片中不同像素值的出现次数,你需要在循环遍历每张图片时,创建一个新的字典来记录该图片中不同像素值的出现次数,而不是使用全局的pixel_counts字典。
以下是一个修改后的代码示例:
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())
# 提取指定的像素值
extracted_pixels = [pixel for pixel in pixels if pixel in pixels_to_extract]
# 统计每张图片不同像素值的数量
image_pixel_counts = {pixel: 0 for pixel in pixels_to_extract}
for pixel in extracted_pixels:
image_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 image_pixel_counts.items():
file.write(f'{pixel[0]}, {pixel[1]}, {pixel[2]}: {count}\n')
print('转换完成')
修改后的代码中,每个图片的像素值统计信息存储在image_pixel_counts字典中,并输出到对应的文本文件。这样就可以统计每张图片中不同像素值的出现次数了。
原文地址: https://www.cveoy.top/t/topic/b1h0 著作权归作者所有。请勿转载和采集!