一个文件夹中有H78_1,L54_2,H46_3,H89_1,H45_1,H79_3等多个文件夹,每个文件夹中有450张512X512的图像,如何将每一个文件中各自的图像堆栈起来,然后将各个图像计算的结果,例如总体积,总面积,按照文件夹名称,保存成一个总的csv文件。利用3.8版本的python,举个详细的例子
时间: 2024-03-02 07:51:48 浏览: 64
好的,我可以为您提供一个Python脚本来完成所需的任务。首先,您需要安装以下模块:os、numpy、pandas、Pillow。
以下是Python脚本的详细说明:
```python
import os
import numpy as np
import pandas as pd
from PIL import Image
# 设置文件夹路径和文件夹名称列表
folder_path = "/path/to/folder"
folder_list = ["H78_1", "L54_2", "H46_3", "H89_1", "H45_1", "H79_3"]
# 定义计算总体积和总面积的函数
def calculate_volume_area(image_array):
volume = np.sum(image_array)
area = np.sum(image_array > 0)
return volume, area
# 创建一个空的DataFrame,用于存储计算结果
df = pd.DataFrame(columns=["Folder Name", "Total Volume", "Total Area"])
# 遍历文件夹列表
for folder_name in folder_list:
# 设置当前文件夹路径
current_folder_path = os.path.join(folder_path, folder_name)
# 初始化一个空的ndarray,用于存储当前文件夹中的所有图像
image_stack = np.zeros((450, 512, 512))
# 遍历当前文件夹中的所有图像
for i in range(1, 451):
# 设置当前图像路径
current_image_path = os.path.join(current_folder_path, f"{i}.jpg")
# 将当前图像存储到image_stack中
image_stack[i-1] = np.array(Image.open(current_image_path))
# 调用计算函数,计算当前文件夹中所有图像的总体积和总面积
total_volume, total_area = calculate_volume_area(image_stack)
# 将计算结果添加到DataFrame中
df = df.append({"Folder Name": folder_name, "Total Volume": total_volume, "Total Area": total_area}, ignore_index=True)
# 将DataFrame保存为csv文件
df.to_csv("/path/to/output.csv", index=False)
```
请将上述代码中的`/path/to/folder`替换为存储文件夹的实际路径,将`["H78_1", "L54_2", "H46_3", "H89_1", "H45_1", "H79_3"]`替换为文件夹名称列表,将`/path/to/output.csv`替换为保存计算结果的csv文件的实际路径。
该脚本将遍历每个文件夹,将其中的所有图像堆栈起来,然后计算每个文件夹中所有图像的总体积和总面积,并将结果存储在一个DataFrame中。最后,将DataFrame保存为csv文件。
阅读全文