Как прочитать изображение, не сохраняя его в текущем рабочем каталоге в python - PullRequest
1 голос
/ 20 апреля 2020

У меня есть список изображений в виде строк 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

Я не хочу сохранять изображение для каждой итерации

Есть ли альтернатива этому процессу

...