文件夹里91张透明图像被分为了三类,标签分别为0,1,2,标签分类已写入labels.txt,标签格式为001 0,002 1,003 2......,批量计算不同类别透明图像的像素点总和,不包括透明像素。完整代码
时间: 2024-03-23 11:41:44 浏览: 79
下面是可以实现该功能的完整代码:
```python
import os
# 读取标签文件
with open('labels.txt', 'r') as f:
labels = f.readlines()
# 初始化字典,用于存储不同标签对应的像素点总数
pixel_sum = {'0': 0, '1': 0, '2': 0}
# 遍历文件夹中的所有图片
for filename in os.listdir('images'):
if filename.endswith('.png'): # 只处理 PNG 格式的图片
# 获取标签值
label = labels[int(filename[:-4]) - 1].split()[-1]
# 读取图片,并计算像素点总数
with open(os.path.join('images', filename), 'rb') as f:
byte = f.read(1)
pixel_count = 0
while byte:
if byte != b'\x00':
pixel_count += 1
byte = f.read(1)
# 更新字典中对应标签的像素点总数
pixel_sum[label] += pixel_count
# 输出结果
print('标签0的像素点总数为:', pixel_sum['0'])
print('标签1的像素点总数为:', pixel_sum['1'])
print('标签2的像素点总数为:', pixel_sum['2'])
```
该代码首先读取标签文件 `labels.txt`,然后遍历文件夹中的所有 PNG 格式的图片。对于每张图片,它会从标签文件中读取对应标签,并计算不包括透明像素的像素点总数。最后,它将像素点总数累加到字典 `pixel_sum` 中对应标签的值中,并输出每个标签的像素点总数。
阅读全文