Как сохранить изображение в столбце данных панд?

У меня есть следующая строка кода.

v = chemcepterize_mol(mol, embed=10, res=0.2)

Функция chemcepterize_mol принимает некоторые аргументы, такие как mol, embed, res, Эта функция chemcepterize_mol вернуть значение, которое я храню в v которая является обычной переменной.

это v на самом деле вектор, представляющий трехмерное изображение.

Форма v как следует.

print(v.shape) 
(100, 100, 4)

100X100 пикселей изображения с 4 каналами.

Когда я показываю это изображение, оно выглядит как ниже.

plt.imshow(v[:,:,:3])

Изображение 100x100x4

До этого момента все работало нормально. Но у меня есть несколько таких типов изображений (3-мерные векторы), которые мне нужно хранить в моем фрейме данных. Это означает, что мне нужно вызвать эту функцию chemcepterize_mol Несколько раз, скажем, 10 раз, чтобы получить 10 изображений.

Для этого я написал цикл for, как это ниже.

v = np.ndarray(shape=(100,100, 4,1))
for x in range(10):

   v[x]=chemcepterize_mol(data["mol"][x],embed=10,res=0.2)

Вот, data["mol"][x]это x запись колонны mol в моем фрейме данных data, Для каждого из этих data["mol"][x] значения, chemcepterize_mol даст мне другой трехмерный вектор, который мне нужно сохранить.

Я объявил v = np.ndarray(shape=(100,100, 4,1)) так что в его последнем измерении я могу сохранить все свои векторы (изображения), но это дало мне эту ошибку.

ValueError: could not broadcast input array from shape (100,100,4) into shape (100,4,1)

Как я могу сохранить все свои векторы в некотором массиве или предпочтительно в отдельном столбце фрейма данных pandas.

1 ответ

Можно обернуть изображения в список Python. Это позволяет хранить его в DataFrame pandas.

import cv2
import pandas as pd

img1 = cv2.imread('img1.png')
img2 = cv2.imread('img2.png')

df = pd.DataFrame()
df['img'] = [img] # Wrap image in python list

# Add another row using the "dictionary way"
d2 = {'img': [img2]}
df2 = pd.DataFrame.from_records(d2)
df.append(df2)

До сих пор не ясно, как / где вы хотите сохранить свои матрицы.

Вы можете сохранить каждое изображение в файл, а затем загрузить каждое, когда вам это нужно, используя ссылку.

Если это проблема формы, убедитесь, что форма данных для хранения соответствует "контейнеру".

Другим вариантом является изменение ваших данных, когда вы хотите их сохранить, и обратное изменение формы, когда вам нужно их использовать.

Удачи!