【发布时间】:2020-10-04 02:59:46
【问题描述】:
我正在尝试使用 Image 将图形信息保存到 .csv 文件,但我坚持将其转换回图形。它不断给我错误“AttributeError:'str'对象没有属性'array_interface'”。
我想这意味着我从.csv文件中提取的条目是一个字符串,需要转换为数组?
我将图形转换为 np 数组的代码如下所示:
from PIL import Image
img = np.array(Image.open(fig_file))
file_name = 'data.csv'
row_contents = [labels, img]
from csv import writer
def append_list_as_row(file_name, list_of_elem):
# Open file in append mode
with open(file_name, 'a+', newline='') as write_obj:
# Create a writer object from csv module
csv_writer = writer(write_obj)
# Add contents of list as last row in the csv file
csv_writer.writerow(list_of_elem)
append_list_as_row(file_name, row_contents)
有问题的部分(将其转换回图形)如下所示:
import pandas as pd
df1 = pd.read_csv(file_name)
fig_array = df1.loc[1, "img"]
img = Image.fromarray(fig_array, 'RGB')
img.save('test.png')
图像行导致错误。也许我不应该使用熊猫来定位条目?有修改的想法吗?我试过 .to_numpy(),它不起作用。
非常感谢!
【问题讨论】:
-
您是如何将图像保存到 csv 中的?您的代码应显示该内容以进行复制。
-
CSV 不是保存图像的本机方式。数据可能失真了。
-
@BillHuang 我已经添加了代码,请看一下。我只是保存和转换这个特定的条目。
-
@gtomer 嗯...您认为如果我在 csv 文件中存储一个错误矩阵,然后将其提取并绘制它可能是另一种方式吗?或者也许只是做一个带有图形名称的列和一个包含所有图形的单独文件夹,以便我可以交叉引用?
标签: python pandas image csv figure