多张图像被分为了三类,标签分别为0,1,2,批量计算不同类别透明图像的像素点总和,不包括透明像素
时间: 2024-03-23 21:41:28 浏览: 53
利用的方法是 PCA+SVM对第一类图片、第二类图片、第三类图片三类图片进行分类
以下是一个示例代码,可以计算三类图像中非透明像素点的总数:
```python
from PIL import Image
import os
# 定义类别标签和对应的文件夹名称
class_labels = {
0: 'class0',
1: 'class1',
2: 'class2'
}
def count_non_transparent_pixels(image_path):
# 打开图像
img = Image.open(image_path)
# 转换为 RGBA 模式
img = img.convert('RGBA')
# 获取图像的宽度和高度
width, height = img.size
# 初始化非透明像素点数量为 0
non_transparent_pixels = 0
# 遍历每个像素点
for x in range(width):
for y in range(height):
# 获取该像素点的 RGBA 值
r, g, b, a = img.getpixel((x, y))
# 判断是否为非透明像素点
if a != 0:
non_transparent_pixels += 1
return non_transparent_pixels
# 遍历每个类别
for class_label in class_labels:
# 获取该类别对应的文件夹名称
folder_name = class_labels[class_label]
folder_path = os.path.join('your_parent_folder', folder_name)
# 初始化非透明像素点数量为 0
total_non_transparent_pixels = 0
# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
# 获取文件路径
filepath = os.path.join(folder_path, filename)
# 判断是否为图像文件
if filepath.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):
# 计算非透明像素点数量
non_transparent_pixels = count_non_transparent_pixels(filepath)
# 累加到总数中
total_non_transparent_pixels += non_transparent_pixels
# 输出结果
print(f'类别 {class_label} 的非透明像素点总数:{total_non_transparent_pixels}')
```
这段代码遍历了三个文件夹,分别对应三个类别的图像,计算了每个文件夹中所有图像的非透明像素点数量,并将它们累加到 `total_non_transparent_pixels` 变量中。最后,输出每个类别的非透明像素点总数。你需要将 `your_parent_folder` 替换为包含三个类别文件夹的父文件夹的路径。
阅读全文