face_string = face_string + faceList[j]["face_token"]
            else:
                face_string = face_string + ',' + faceList[j]['face_token'];
        e = True;
    print(face_string)
    resu = api.faceset.addface(outer_id = 'test2', face_tokens = face_string)
    print_result('result of addface', resu)
    if(e):
        break'''

img_set = [face_search_img, face_search_img2]

#serach_res = api.search(image_file = File(face_search_img), outer_id = 'test2');

for i in range(2):
    serach_res = api.search(image_file=File(img_set[i]), outer_id='test2')
    print_result('serach result', serach_res)
    face = serach_res['faces']
    face_rect = face[0]['face_rectangle']
    width = face_rect['width']
    left = face_rect['left']
    top = face_rect['top']
    height = face_rect['height']
    start = (left, top)
    end = (left + width, top + height)
    color = (255, 255, 255)
    thick = 2
    cv2.rectangle(img, start, end, color, thick)
cv2.namedWindow('after')
cv2.imshow('after', img)
cv2.waitKey(0)
示例#2
0
# 3,开始搜索

# 初始化对象,进行api的调用工作
api = API()

# 删除无用的人脸库,这里删除了,如果在项目中请注意是否要删除
api.faceset.delete(outer_id='testset', check_empty=0)
# 1.创建一个faceSet
ret = api.faceset.create(outer_id='testset',
                         display_name='测试用set',
                         tags='useless')

# 2.向faceSet中添加人脸信息(face_token)
faceResStr = ""
res = api.detect(image_file=File(faceSet_img))

faceList = res["faces"]

for index in range(len(faceList)):
    if index == 0:
        faceResStr = faceResStr + faceList[index]["face_token"]
    else:
        faceResStr = faceResStr + "," + faceList[index]["face_token"]

api.faceset.addface(outer_id='testset', face_tokens=faceResStr, user_id='bbb')

# 3.开始搜索相似脸人脸信息
search_result = api.search(image_file=File(face_search_img),
                           outer_id='testset')
print_result('search', search_result)
示例#3
0
class FaceDetection:
    def __init__(self, faceset, img_file, main_window, speaker, arduino):
        # 初始化对象,进行api的调用工作
        self.api = API()
        self.faceset = faceset
        self.img_file = img_file
        self.main = main_window
        self.speaker = speaker
        self.arduino = arduino
        self.face_ids = []
        self.face_tokens = []
        self.popupMsg = PopupMsg()
        try:
            facetokens = self.api.faceset.getdetail(outer_id=faceset)
            for facetoken in facetokens.face_tokens:
                try:
                    res = self.api.face.getdetail(face_token=facetoken)
                    self.face_ids.append(res.user_id)
                    self.face_tokens.append(facetoken)
                    print('faces: ', res)
                except:
                    self.popupMsg.popupmsg('API error', 'face.getdetail')
        except:
            try:
                ret = self.api.faceset.create(outer_id=faceset)
            except:
                self.popupMsg.popupmsg('API error', 'faceset.create')

    def identify(self):
        try:
            search_result = self.api.search(image_file=File(self.img_file),
                                            outer_id=self.faceset)
            face_confidence = search_result.results[0].confidence
            user_name = search_result.results[0].user_id
            if face_confidence > 50:
                self.main.name.setPlainText(user_name)
                self.speaker.speakMsg(user_name + ',你好,欢迎回来')
                self.arduino.open_door()
            else:
                self.speaker.speakMsg("对不起,没有你的记录")
        except:
            self.popupMsg.popupmsg('人脸检测API调用失败', '人脸检测')

    def addFace(self):
        user_name = self.main.name.toPlainText()
        print(user_name)
        if user_name:
            try:
                res = self.api.detect(image_file=File(self.img_file))
                faceList = res.faces
                if len(faceList) > 0:
                    try:
                        self.api.faceset.addface(
                            outer_id=self.faceset,
                            face_tokens=faceList[0].face_token)
                        try:
                            self.api.face.setuserid(
                                face_token=faceList[0].face_token,
                                user_id=user_name)
                            self.face_ids.append(user_name)
                            self.face_tokens.append(faceList[0].face_token)
                            self.popupMsg.popupmsg('加了: ' + user_name, '增加人脸')
                        except:
                            self.popupMsg.popupmsg('设置人脸名字失败', '增加人脸')
                    except:
                        self.popupMsg.popupmsg('增加人脸失败', '增加人脸')
                else:
                    self.popupMsg.popupmsg('检测不到人脸', '增加人脸')
            except:
                self.popupMsg.popupmsg('检测人脸失败', '增加人脸')
        else:
            self.popupMsg.popupmsg('请输入名字', '增加人脸')
        self.main.name.setPlainText("")

    def deleteFace(self):
        user_name = self.main.name.toPlainText()
        name_deleted = False
        if user_name:
            i = 0
            for user_id in self.face_ids:
                if user_name == user_id:
                    try:
                        res = self.api.faceset.removeface(
                            outer_id=self.faceset,
                            face_tokens=self.face_token[i])
                        if res.face_removed > 0:
                            self.face_ids.remove(user_name)
                            self.face_tokens.remove(self.face_token[i])
                            self.popupMsg.popupmsg('删除了: ' + user_name, '删除人脸')
                            name_deleted = True
                            break
                        else:
                            self.popupMsg.popupmsg('删除人脸失败: ' + user_name,
                                                   '删除人脸')
                    except:
                        self.popupMsg.popupmsg('删除人脸失败: ' + user_name, '删除人脸')
                i += 1
            if not name_deleted:
                self.popupMsg.popupmsg('找不到: ' + user_name, '删除人脸')
            self.main.name.setPlainText("")
        else:
            self.popupMsg.popupmsg('请输入名字', '删除人脸')