Как сохранить закодированное изображение с помощью Pickle - PullRequest
0 голосов
/ 03 сентября 2018

То, что я здесь делаю, - это кодирование изображения, а затем добавление его в список с путем к исходному изображению в переменной базы данных, например

database.append[path, encoding]

Затем я хочу сохранить эту переменную базы данных в рассол для использования в других программах. Как бы я поступил так, как мне еще не удалось сохранить файлы правильно. Любая помощь будет оценена. Вот метод, который я использую для генерации переменных, которые я хочу сохранить

def embedDatabase(imagePath, model, metadata):
#Get the metadata


#Perform embedding
# calculated by feeding the aligned and scaled images into the pre-trained network.

'''
#Go through the database and get the embedding for each image
'''
database = []
embedded = np.zeros((metadata.shape[0], 128))
print("Embedding")
for i, m in enumerate(metadata):
    img = imgUtil.loadImage(m.image_path())
    _,img = imgUtil.alignImage(img)
     # scale RGB values to interval [0,1]
    if img is not None:
        img = (img / 255.).astype(np.float32)
        #Get the embedding vectors for the image
        embedded[i] = model.predict(np.expand_dims(img, axis=0))[0]
        database.append([m.image_path(), embedded[i]])

#return the array of embedded images from the database    
return embedded, database

А это метод загрузки изображения

def loadImage(path):
img = cv2.imread(path, 1)
if img is not None:  
    # OpenCV loads images with color channels
    # in BGR order. So we need to reverse them
    return img[...,::-1]
else:
    pass
    print("There is no Image avaliable")

1 Ответ

0 голосов
/ 04 сентября 2018

Разобрался.

with open("database.pickle", "wb") as f:
     pickle.dump(database, f, pickle.HIGHEST_PROTOCOL)

по какой-то причине мне понадобился рассол. HIGHEST_PROTOCOL Вещи

...