Правильно ли сохранять дескрипторы SIFT opencv в поле модели Django для дальнейшего использования и как это сделать? - PullRequest
0 голосов
/ 01 августа 2020

Я сравниваю отправленное пользователем изображение с изображениями в базе данных postgressql. Я использую Django ImageField для сохранения изображений в базе данных. Ниже приведен фрагмент, который я использую

'' '

image1 = None 
images = models.Image.objects.all()

imgs = []
tempf = None
if request.POST:
    image1 = request.FILES.get('imagesearch')
    tempf, tempfn = tempfile.mkstemp()
    try:
        for chunk in image1.chunks():
            os.write(tempf, chunk)
    except:
        raise Exception("Problem with the input file ")
    finally:
        os.close(tempf)
    if tempf:
        image1 = cv2.imread(tempfn)
        image1 = cv2.cvtColor(image1, cv2.COLOR_BGR2GRAY)
        sift = cv2.xfeatures2d.SIFT_create()
        keypoints_1, descriptors_1 = sift.detectAndCompute(image1,None)
        


    
    for image in images:
        tempf2, tempfn2 = tempfile.mkstemp()
        try:
            for chunk in image.image.chunks():
                os.write(tempf2, chunk)
        except:
            raise Exception("Problem with the input file ")
        finally:
            os.close(tempf2)
        if tempf2:
            image2 = cv2.imread(tempfn2)
            image2 = cv2.cvtColor(image2, cv2.COLOR_BGR2GRAY)

        #sift
        sift = cv2.xfeatures2d.SIFT_create()

        keypoints_2, descriptors_2 = sift.detectAndCompute(image2,None)

        #feature matching
        bf = cv2.BFMatcher(cv2.NORM_L1, crossCheck=True)

        matches = bf.match(descriptors_1,descriptors_2)
        matches = sorted(matches, key = lambda x:x.distance)

' ''

Я новичок в python и opencv. Как я могу сохранить результаты дескриптора SIFT в базе данных или файле для будущего использования, чтобы ускорить процесс.

...