Я пытаюсь получить изображение в виде строки base64 через Django REST API и использовать его в моей программе распознавания изображений OpenCV
Я написал программу, но, похоже, она не работает вообще
views.py
class ImageRecog(generics.ListAPIView): # API to query uploads
serializer_class = ImageDBSerializer
lookup_field = 'image_tags'
def get_queryset(self):
image_encoded = self.request.query_params.get('image')
fh = open("imageToSave.png", "wb")
fh.write(image_encoded.decode('base64'))
fh.close()
# location of the photo we want to test out
original = cv2.imread(r"imageToSave.png")
sift = cv2.xfeatures2d.SIFT_create()
kp_1, desc_1 = sift.detectAndCompute(original, None)
index_params = dict(algorithm=0, trees=5)
search_params = dict()
flann = cv2.FlannBasedMatcher(index_params, search_params)
# Load all the images
all_images_to_compare = []
titles = []
# location of all the photos
# image store directory
for f in glob.iglob(r"C:\Users\User\Desktop\django\StudyHome\studybuddy\*"): #directory of where images gets gaved from database
image = cv2.imread(f)
titles.append(f)
all_images_to_compare.append(image)
# 1) Check if 2 images are equals
for image_to_compare, title in zip(all_images_to_compare, titles):
if original.shape == image_to_compare.shape:
difference = cv2.subtract(original, image_to_compare)
b, g, r = cv2.split(difference)
if cv2.countNonZero(b) == 0 and cv2.countNonZero(g) == 0 and cv2.countNonZero(r) == 0:
print("Similarity: 100% (equal size and channels)")
print("Title: " + title)
return ImageDB.objects.filter(title__iexact=title)
break
urls.py
url('^image/$', ImageRecog.as_view()), # Upload search Api
serializers.py
class ImageDBSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = ImageDB
fields = ('image_id', 'image', 'image_tags',)