Мне удалось выгрузить все свои тренировочные образы на мой локальный сервер с помощью webAPI, и мне удалось присвоить им соответствующие имена и удалить их, когда это необходимо, однако я застрял при попытке загрузить 2 указанных c изображений из моей папки! Вот код:
import requests
import urllib
import json
import base64
from PIL import Image
import os
import glob
class ....:
def .............
*** #Authentication and login functions here ***
def image_to_base64(self, img):
# convert face img to base64
prependInfo = 'data:image/jpeg;base64,'
encodedString = base64.b64encode(img).decode("utf-8")
fullString = str(prependInfo) + encodedString
return str(fullString)
def compare_2images(self,img1,img2):
base_url = "localhost"
parameters = {
"image-data-1" :"1" ,
"image-data-2" :"2"
}
data = {
"image-data": self.image_to_base64(img)
}
r = requests.post(base_url + urllib.parse.urlencode(parameters),headers={'Authorization': self.auth_tok},data=data).json()
print (r)
return r
cv = cv()
cv.retrieve_auth_token()
Я попытался поместить 2 изображения в отдельную папку и изменил функцию на:
def compare_2images(self,img):
и использовал этот код (ниже) для загрузки 2 изображения:
folder = "/home/data/compare2/"
piclist = []
for files in os.listdir(folder):
with open("{folder}{name}".format(folder=folder, name=files), "rb") as data:
piclist.append(files)
cv.compare_2images(data.read())
Это работает, так как я не получаю ошибок, но ничего не делается на стороне сервера API, просто пустой ответ.
Тогда я попробовал это так:
with open("/home/data/picture1.jpg","rb") as img1, open("/home/data/picture2.jpg", 'rb') as img2:
cv.compare_2images(img1.read(),img2.read())
Я получаю этот код ошибки:
Traceback (последний вызов был последним): файл «compare.py», строка 60, в cv.compare_2images (img1.read (), img2. read ()) Файл «compare.py», строка 42, в Compare_2images «image-data»: self.image_to_base64 (img), NameError: имя 'img' не определено