Esempio n. 1
0
class WordRestore():
    def __init__(self, wordConfigFile, dumpWordFileName):
        self.__dataFile = wordConfigFile
        self.__dumpWordFileName = dumpWordFileName
        self._load()

    def _load(self):
        with open(self.__dataFile, "r") as fileObj:
            fileContent = fileObj.read()
            self._wordMap = JSONDecoder().decode(fileContent)
            self._wrongWordList = []

    def update(self):
        with open(self.__dataFile, "w") as fileObj:
            fileObj.write(JSONEncoder().encode(self._wordMap))

    def _generateWordList_(self, nWords, isRightWord):
        pass

    def getReviewList(self, nWords, isRightWord):
        return self._generateWordList_(nWords, isRightWord)

    def produceJSON(self, fileContent, isAdd=False):
        wordMap = {}
        for line in fileContent.splitlines():
            traitMap = {"review": 0, "right": 0}
            wordMap[line.strip()] = traitMap
        if (not isAdd):
            with open(self.__dataFile, 'w') as fileObj:
                fileObj.write(JSONEncoder().encode(wordMap))
            self._load()
        else:
            for key in wordMap.keys():
                if (key not in self._wordMap.keys):
                    self._wordMap[key] = wordMap[key]

    def review(self, word, isRight):
        self._wordMap[word]['review'] = self._wordMap[word]['review'] + 1
        if (isRight):
            self._wordMap[word]['right'] = self._wordMap[word]['right'] + 1
        else:
            self._wrongWordList.append(word)

    def recordResult(self, isEntireWrong=False):
        #fileName = os.path.join(self.__dumpWordFileName,time.strftime('%b %d %Y %H_%M',time.localtime(time.time()))+".txt")
        fileName = self.__dumpWordFileName
        with open(fileName, "w") as fileObj:
            dumpList = []
            if (not isEntireWrong):
                dumpList = self._wrongWordList
            else:
                entireWrong = []
                for word in self._wordMap.keys():
                    if (self._wordMap[word]['review'] !=
                            self._wordMap[word]['right']):
                        entireWrong.append(word)
                dumpList = entireWrong
            dumpStr = ";".join(dumpList)
            fileObj.write(dumpStr)
        return fileName
Esempio n. 2
0
def get_landmarks(img_path,score):
    URL = "https://api-cn.faceplusplus.com/facepp/v3/detect"

    data = dict()
    data["api_key"] = "Oz-xhKkok8YDa12CV1k_aJAl4VOkwPFs"
    data["api_secret"] = "rDPvjaqUj_w7xg06w2BLOILKIHK2WkaN"
    data["return_landmark"] = "2"
    data["return_attributes"] = "facequality"

    files = {"image_file": open(img_path, "rb")}

    # post
    response = requests.post(url=URL, data=data, files=files)
    res_content = response.content.decode("utf-8")
    res_dict = JSONDecoder().decode(res_content)

    # get raw landmarks
    if "faces" in res_dict.keys() and len(res_dict["faces"])>0:
        if res_dict["faces"][0]["attributes"]["facequality"]["value"]>score:
            landmarks = res_dict["faces"][0]["landmark"]
            raw_landmarks = []
            for name, point in landmarks.items():
                raw_landmarks.append([point["x"], point["y"]])
            raw_landmarks = np.asarray(raw_landmarks)
            return raw_landmarks,True
        else:
            return 0,False 
    else:
        return 0,False
Esempio n. 3
0
def faceDetect(path,toPath):

    http_url = "https://api-cn.faceplusplus.com/facepp/v3/detect"
    data = {
        "api_key": "mCfBN23JWgwYFHyhlEWoB7mpIVh8HuW5",
        "api_secret": "x44kBrjgCVddv6MynjXryXjT9hjjkxYN"
    }

    f = open(path, "rb")
    files = {"image_file": f}
    response = requests.post(http_url, data=data, files=files)
    req_con = response.content.decode('utf-8')
    response.close()
    req_dict = JSONDecoder().decode(req_con)
    f.close()
    if "error_message" in req_dict.keys():
        print("发生了错误:")
        print(req_dict)
        return

    img = Image.open(path)
    img_d = ImageDraw.Draw(img)
    face = req_dict["faces"]
    for f in face:
        face_rectangle = f["face_rectangle"]
        img_d.rectangle((face_rectangle['left'], face_rectangle['top'],
                         face_rectangle['left'] + face_rectangle['width'],
                         face_rectangle['top'] + face_rectangle['height']), outline="red")
    img.save(toPath)
    img.close()
    time.sleep(5)
def face_recognition(frame,
                     face_rectangles,
                     templatepath="./dataset/template",
                     draw_text=True):
    data = {"api_key": key, "api_secret": secret}
    draw_information = []
    for i in face_rectangles:
        w = i['width']
        t = i['top']
        l = i['left']
        h = i['height']
        # cv2.imshow("gag",frame[t:t+h,l:l+w,:])
        # cv2.waitKey(0)
        face1 = cv2.imencode('.jpg', frame[t:t + h, l:l + w, :])[1]
        cv2.rectangle(frame, (l, t), (w + l, h + t), (0, 0, 255),
                      2)  # opencv的标框函数
        for j in os.listdir(templatepath):
            tempath = os.path.join(templatepath, j)
            face2 = cv2.imencode('.jpg', cv2.imread(tempath))[1]
            files = {"image_file1": face1, "image_file2": face2}
            response = requests.post(compare_url, data=data, files=files)
            req_con = response.content.decode('utf-8')
            req_dict = JSONDecoder().decode(req_con)

            if 'confidence' in req_dict.keys():
                confindence = req_dict['confidence']
                if confindence >= 65:
                    draw_information.append([j.split(".")[0], (l, t)])
    if draw_text and len(draw_information) > 0:
        for x in draw_information:
            cv2.putText(frame, x[0], x[1], cv2.FONT_HERSHEY_COMPLEX, 0.5,
                        (0, 0, 255), 1)
    return frame
Esempio n. 5
0
class WordRestore():
    def __init__(self,wordConfigFile,dumpWordFileName):
        self.__dataFile = wordConfigFile
        self.__dumpWordFileName = dumpWordFileName
        self._load()


    def _load(self):
        with open(self.__dataFile,"r") as fileObj:
            fileContent = fileObj.read()
            self._wordMap=JSONDecoder().decode(fileContent)
            self._wrongWordList = []

    def update(self):
        with open(self.__dataFile,"w") as fileObj:
            fileObj.write(JSONEncoder().encode(self._wordMap))
    def _generateWordList_(self,nWords,isRightWord):
        pass

    def getReviewList(self,nWords,isRightWord):
        return self._generateWordList_(nWords,isRightWord)

    def produceJSON(self,fileContent,isAdd=False):
        wordMap = {}
        for line in fileContent.splitlines():
            traitMap = {"review":0,"right":0}
            wordMap[line.strip()] = traitMap
        if(not isAdd):
            with open(self.__dataFile,'w') as fileObj:
                fileObj.write(JSONEncoder().encode(wordMap))
            self._load()
        else:
            for key in wordMap.keys():
                if(key not in self._wordMap.keys):
                    self._wordMap[key] = wordMap[key]

    def review(self,word,isRight):
        self._wordMap[word]['review'] = self._wordMap[word]['review'] +1
        if(isRight):
            self._wordMap[word]['right'] = self._wordMap[word]['right'] +1
        else:
            self._wrongWordList.append(word)

    def recordResult(self,isEntireWrong=False):
        #fileName = os.path.join(self.__dumpWordFileName,time.strftime('%b %d %Y %H_%M',time.localtime(time.time()))+".txt")
        fileName = self.__dumpWordFileName
        with open(fileName,"w") as fileObj:
            dumpList = []
            if(not isEntireWrong):
                dumpList = self._wrongWordList
            else:
                entireWrong = []
                for word in self._wordMap.keys():
                    if(self._wordMap[word]['review'] != self._wordMap[word]['right']):
                        entireWrong.append(word)
                dumpList = entireWrong
            dumpStr = ";".join(dumpList)
            fileObj.write(dumpStr)
        return fileName
Esempio n. 6
0
 def get(self, params):
     try:
         raw_result = requests.get(self.vk_api + self.method, params=params)
         result = JSONDecoder().decode(raw_result.text)
         if 'response' in result.keys():
             return result['response']
         else:
             print(result['error']['error_msg'])
     except requests.exceptions.ConnectionError as err:
         raise 'Connection error' + err
     except JSONDecodeError:
         print('Can\'t decode, return empty string')
         return ''
Esempio n. 7
0
def face(image_path):
    for i in range(20):
        try:
            response = requests.post(
                http_url,
                data=data,
                files={"image_file": open(image_path, "rb")})
            req_con = response.content.decode('utf-8')
            req_dict = JSONDecoder().decode(req_con)
            #print("%d faces are detected" %len(req_dict['faces']))
            if "error_message" in req_dict.keys():
                time.sleep(1)
                continue
            else:
                return ((req_dict))
        except requests.exceptions.HTTPError as e:
            print(e)
        if i == 19:
            print(None)
Esempio n. 8
0
    def create_label(username):
        the_user = User.find_by_username(username)

        if the_user is None:
            rd = {
                'error':
                'Label creation has failed.',
                'description':
                f"User with username '{username}' could not be found."
            }
            return make_json_response(rd, 400)

        label_dict = request.json
        if isinstance(label_dict, str):
            label_dict = JSONDecoder().decode(label_dict)

        if 'text' not in label_dict.keys():
            rd = {
                'error': 'Label creation has failed.',
                'description':
                "Malformed JSON in request. Required keys: 'text'."
            }
            return make_json_response(rd, 400)

        try:
            the_label = Label.from_json_dict(label_dict)
        except ValueError:
            rd = {
                'error': 'Label creation has failed.',
                'description':
                "Value for 'text' key longer than 30 characters."
            }
            return make_json_response(rd, 400)

        the_label.user_id = the_user.id
        db.session.add(the_label)
        db.session.commit()

        inserted_label_dict = the_label.to_json_dict()
        resp_dict = {'created_label': inserted_label_dict}

        return make_json_response(resp_dict, 201)
Esempio n. 9
0
 def from_json(json_str):
     py_dict = JSONDecoder().decode(json_str)
     param_name = None
     value = None
     class_ = None
     for k in py_dict.keys():
         if k == "param_name":
             param_name = py_dict[k]
         elif k == "value":
             v = py_dict[k]
             if isinstance(v, (tuple, list, dict, set)):
                 if isinstance(v[0], (tuple, list, dict, set)):
                     value = tuple(zip(*v))
                 else:
                     value = tuple(v)
             else:
                 value = v
         elif k == "class":
             class_ = py_dict[k]
     if param_name is None or value is None or class_ is None:
         raise ValueError("Unable to reconstruct Param object from JSON")
     return getattr(sys.modules[__name__], class_)(param_name, value)