У меня есть список изображений в виде строк base64, и я преобразовал каждую строку в numpy n размерный массив, теперь я хочу сравнить эти изображения одно за другим с изображением, которое есть в моем каталоге. Если мне нужно сохранить все изображения в списке в виде строк base64, это будет очень медленный процесс. Есть ли способ прочитать изображения, не сохраняя их в каталоге?
import base64
import cv2
import numpy as np
def compare(staticImage, ImageFromList):
original = cv2.imread(staticImage)
for i in ImageFromList:
nparr = np.frombuffer(base64.b64decode(i), np.uint8)
image = cv2.imdecode(nparr, cv2.IMREAD_ANYCOLOR)
cv2.imwrite("imgg.jpg", image)
image_to_compare = cv2.imread("imgg.jpg")
# 1) Check for similarities between the 2 images
# noinspection PyUnresolvedReferences
sift = cv2.xfeatures2d.SIFT_create()
kp_1, desc_1 = sift.detectAndCompute(original, None)
kp_2, desc_2 = sift.detectAndCompute(image_to_compare, None)
index_params = dict(algorithm=0, trees=5)
search_params = dict()
flann = cv2.FlannBasedMatcher(index_params, search_params)
matches = flann.knnMatch(desc_1, desc_2, k=2)
good_points = []
for m, n in matches:
if m.distance < 0.6 * n.distance:
good_points.append(m)
if len(good_points) > 0:
return 1
else:
continue
Я не хочу сохранять изображение для каждой итерации
Есть ли альтернатива этому процессу