сохранить массив 3D в CSV

1

Извините, у меня есть проблема с сохранением данных в CSV, я хочу сохранить трехмерный массив изображений, я мог бы сохранить его, проблема возникает при чтении 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)
Теги:
pandas
csv
opencv

2 ответа

1

Я также не уверен, почему вы хотите сохранить изображение в формате CSV. Поскольку вы работаете с opencv, почему бы вам не использовать cv2.imwrite, который совместим с вашим cv2.imshow.

Другой способ сохранить изображение 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(). Тогда вы можете изменить свой скрипт как

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

for x in range(len(dt.index)):
    # recover image dimension
    width = new_dt.iloc[x,0]
    height = new_dt.iloc[x,1]

    # load image and reshape to original dimension
    images = new_dt.iloc[x,2:].reshape(height, width, -1)
    print(imagess)
    cv2.imshow('imagenew', imagess)
1

Из вопроса, почему вы хотите использовать кадры данных Pandas для хранения изображения, не ясно. Я думаю, что это делает вещи излишне сложными. Вместо этого вы можете напрямую сохранить массив в двоичном формате и через некоторое время загрузить его снова.

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()
  • 0
    Я поместил это в CSV, почему я храню тысячи изображений, потому что это игра, тогда игра генерирует массив RGB в 3D, и как я новичок, используя это, тогда мне удалось сохранить массивы в CSV

Ещё вопросы

Сообщество Overcoder
Наверх
Меню