【问题标题】:Extract Pixels from a pmg file and convert them into a pandas data frame从 pmg 文件中提取像素并将其转换为 pandas 数据框
【发布时间】:2019-11-02 08:34:24
【问题描述】:

我有一个目录,每个目录都有一堆 PMG 文件,我想从每个图像中提取像素并将它们放入熊猫数据框中。

from PIL import Image
import os
import pandas as pd
import numpy as np
dirs = [r"D:\MSIT\Machine Learning\IMG"+"\\s"+str(i) for i in range(1,41)]
pixels = list()
df  = pd.DataFrame(columns = ["f" + str(i) for i in range(1,10305)])
cols = list(df.columns)
for directory in dirs:
    for filename in os.listdir(directory):
        im = Image.open(directory + "\\" +filename)
        dims = (list(im.getdata()))
        df2 = pd.Series(dims)
        pixels.append(dims)
k = 1
for i in pixels:
    for j in i:
        df2 = pd.Series(j)
        df.append(df2, ignore_index = True)
        print(str(k) + "Done")
        k += 1
print(df.head())
df.to_csv('pixel_data.csv') 

【问题讨论】:

  • 请问什么是 PMG 文件?你的问题到底是什么?谢谢。

标签: python-3.x pandas python-imaging-library


【解决方案1】:

我假设您希望 PMG 文件的像素值成为您的特征。您可以使用 df.loc 在 DataFrame 中使用索引,并逐行添加数据。此外,使用 numpy 会加快处理速度。

import pandas as pd
from PIL import Image
import os
import numpy as np

columns = [i for i in range(10304)] 
columns.append('Label')

df = pd.DataFrame(columns=columns)
rows = 0

for direc in os.listdir():
    if direc.startswith('s'):
        print('Adding ' + direc)
        print('--------------')

        for file in os.listdir('./' + direc):
            im = Image.open('./' + direc + '/' + file)
            x = np.array(im.getdata())
            x = x.tolist()
            x.append(int(direc.replace('s', '')))
            df.loc[rows] = x
            rows += 1  

df.to_csv('Dataset.csv')

【讨论】:

    猜你喜欢
    • 2020-11-17
    • 2019-09-24
    • 2021-09-01
    • 1970-01-01
    • 2019-06-25
    • 1970-01-01
    • 2017-06-10
    • 2019-11-23
    • 1970-01-01
    相关资源
    最近更新 更多