Я пытаюсь загрузить 2 изображения на свой локальный сервер, используя документированный веб-API, предоставленный для сравнения их с компьютерным зрением? - PullRequest
0 голосов
/ 08 марта 2020

Мне удалось выгрузить все свои тренировочные образы на мой локальный сервер с помощью 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' не определено

...