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
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
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
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
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 ''
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)
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)
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)