def save_person_capture(cls, max_faces=100): """ save person with video capture. """ nickname, last_name, first_name, company = \ cls.ask_personality() cls.say("{}さんのことを覚えたいので5秒ほどビデオを撮りますね。".format(nickname)) cls.say("はい。とりまーす!") def face_yield(face, faces): if len(faces) > cls.PERSON_IMAGES_NUM: yield face yield face all_face_imgs = face_capture.FaceCapture.capture( loop_func=lambda **kwargs: True, continue_condition_func=lambda **kwargs: len( kwargs.get('face_positions')) > 1, break_condition_func=lambda **kwargs: len(kwargs.get('all_face_imgs')) > cls.PERSON_IMAGES_NUM) person_obj = Person( nickname=nickname, last_name=last_name, first_name=first_name, company=company, ) person_obj.set_face_imgs(all_face_imgs, cls.SAVE_IMAGE_SIZE) cls.say("今{}さんのこと覚えてます。1分くらいかかるかもしれません。".format( nickname)) # cls.say("たぶん大丈夫ですが、僕はロボットなのでデータの保存に失敗すると" # "全て忘れてしまうので...") person_obj.save() cls.say("{}さんのことバッチリ覚えました!またお会いしましょう。".format( nickname))