以CSV格式保存阵列3D

2024-06-28 20:48:45 发布

您现在位置:Python中文网/ 问答频道 /正文

抱歉,我在csv中保存数据时遇到问题,我想保存的是一个3d图像数组,我可以保存它,读取csv时出现问题,因为它保存为字符串,所以我无法读取数据来创建图像,请尝试使用astype(“uint8”),我需要有人来帮我恢复数据格式,因为我需要改变数据的格式。在

    new_dt=pd.read_csv('mypic2.csv')

    for x in range(len(a.index)):
        imagess=a.img[x]
        print(imagess)
        cv2.imshow('imagenew', imagess)

Tags: csv数据字符串图像newread格式dt
2条回答

现在还不清楚为什么要使用pandas数据帧来存储图像。我认为这让事情变得不必要的复杂。您可以直接以二进制格式存储numpy数组,并在以后的某个时刻再次加载它。在

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

#create an image
imar = np.array([[[1.,0.,1.],[0.,0.,1.],[1.,1.,0.]],
                 [[0.,1.,1.],[0.,1.,1.],[1.,2.,3.]],
                 [[0.,0.,1.],[1.,1.,1.],[1.,0.,0.]]]).transpose()
plt.imsave('pic.png', imar)

#create dataframe

df = pd.DataFrame([[0,""]], columns=["Feature1","Feature2"])

# read the image
im = plt.imread('pic.png')

plt.imshow(im)
plt.show()

#save the image array to binary file
np.save('mypic.npy', im)
# store name of image in dataframe
df.iloc[0,1] = 'mypic.npy'
#save dataframe
df.to_csv("mydf.csv")
del df

#read dataframe from csv
df = pd.read_csv("mydf.csv")
# load the image from binary file, given the path from the Dataframe
new_im= np.load(df["Feature2"][0])
# show the loaded image
plt.imshow(new_im)
plt.show()

我也不太确定为什么你要保存一个图像为csv。既然您使用的是opencv,为什么不使用与您的cv2.imshow兼容的cv2.imwrite。在

另一种保存opencv图像的方法是使用numpy.save,因为opencv图像本质上是一个np.array。在

如果必须将其保存在csv中,则可以创建一个类似

          width . height .  0  .  1  . ...
image_1 .   w1  .   h1   .  f0 .  f1 . ...
image_2 .   w2  .   h2   .  f0 .  f1 . ...

其中每行包含图像的宽度和高度,后跟image.flatten()。然后可以将脚本修改为

^{pr2}$

相关问题 更多 >