Я сравниваю отправленное пользователем изображение с изображениями в базе данных 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 в базе данных или файле для будущего использования, чтобы ускорить процесс.