コード例 #1
0
 def show_data_empty(self):
     unable_open_s = _("Nothing enter")
     msg = _("You haven't entered anything yet! ")
     messagebox.showerror(
         unable_open_s,
         msg,
     )
コード例 #2
0
 def show_from(self, *args):
     show_f = self.get_dict_key_by_value(
         self.showfm.showf_t_dict, self.showfm.showf_optionmenu_sv.get())
     if show_f == "file":
         self.face_src_path = tkf.askopenfilename(
             title=_("Select a file"),
             filetypes=[(
                 _("Image or video"),
                 "*." + (" *.".join(self.image_exts + self.video_exts)),
             )],
             initialdir="~",
         )
         if len(self.face_src_path) < 1:
             return
         ext = os.path.splitext(self.face_src_path)[1][1:]
         self.showfm.showf_sv.set(self.face_src_path)
         if ext in self.image_exts:
             self.view_image()
         elif ext in self.video_exts:
             self.source = self.face_src_path
             self.play_video()
     elif show_f == "camera":
         self.source = 0
         self.showfm.showf_sv.set(self.source)
         self.play_video()
コード例 #3
0
 def about_fn(self):
     if self.about_tl == None:
         self.about_tl = Toplevel(borderwidth=10)
         self.about_tl.title(_("About Funing"))
         self.about_tl.resizable(0, 0)
         Label(self.about_tl, text=_("Funing"), font=("", 25)).pack()
         Label(self.about_tl, text=settings.version).pack()
         self.source_page_label = Label(
             self.about_tl,
             text=settings.source_page,
             foreground="blue",
             cursor="hand2",
         )
         self.source_page_label.bind(
             "<Button-1>",
             lambda e: webbrowser.open_new(settings.source_page),
         )
         self.source_page_label.pack()
         Label(self.about_tl,
               text=_("Licensed under the MIT license")).pack()
         self.about_tl.mainloop()
     else:
         self.about_tl.destroy()
         self.about_tl = None
     pass
コード例 #4
0
 def __init__(self, frame):
     self.frame = frame
     self.face_show_frame = tk.Frame(self.frame)
     self.info_enter_frame = tk.Frame(self.frame)
     self.prevf_btn = tk.Button(self.face_show_frame, text=_("prev_symb"))
     self.curf_label = tk.Label(self.face_show_frame)
     self.nextf_btn = tk.Button(self.face_show_frame, text=_("next_symb"))
     self.ft_sb = tk.Scrollbar(self.info_enter_frame, orient=VERTICAL)
     self.face_text = Text(
         self.info_enter_frame, yscrollcommand=self.ft_sb.set
     )
     self.save_btn = tk.Button(self.frame, text=_("Save"))
     self.ft_sb.config(command=self.face_text.yview)
コード例 #5
0
    def __init__(self, frame):
        self.frame = frame
        # video label
        self.vid_frame_label = tk.Label(self.frame)

        self.showf_sv = tk.StringVar(self.frame)
        self.showf_entry = tk.Entry(self.frame,
                                    width=10,
                                    textvariable=self.showf_sv)
        self.showf_go_btn = tk.Button(self.frame, text=_("GO"))

        self.showf_t_dict = {"file": _("File"), "camera": _("Camera")}
        self.showf_optionmenu_sv = tk.StringVar(self.frame, value=_("Open"))
        self.showf_optionmenu = tk.OptionMenu(self.frame,
                                              self.showf_optionmenu_sv,
                                              *self.showf_t_dict.values())

        # comparison_tolerance entry
        self.ct_label = tk.Label(self.frame, text=_("tolerance") + ":")
        self.ct_stringvar = tk.StringVar(frame, ct)
        self.ct_entry = tk.Entry(self.frame,
                                 width=8,
                                 textvariable=self.ct_stringvar)

        # shoot
        self.pp_sv = tk.StringVar(frame, _("Pause"))
        self.pp_btn = tk.Button(self.frame, textvariable=self.pp_sv)

        self.rec_sv = tk.StringVar(frame, _("Recognize"))
        self.rec_btn = tk.Button(self.frame, textvariable=self.rec_sv)

        self.pick_sv = tk.StringVar(frame, _("Pick"))
        self.pick_btn = tk.Button(self.frame, textvariable=self.pick_sv)
コード例 #6
0
    def pause_play(self, *args):
        if self.source_type != 1:
            return
        if self.pause:
            self.pause = False
            self.refresh_frame()
            self.showfm.pp_sv.set(_("Pause"))
            if settings.debug:
                print("Play. . .")

        else:
            self.root_after_cancel()
            self.showfm.pp_sv.set(_("Play"))
            self.pause = True
            if settings.debug:
                print("Pause. . .")
コード例 #7
0
 def __init__(self):
     self.root = tk.Tk()
     self.root.title(_("Funing") + "(" + settings.version + ")")
     # frame
     self.showframe = ShowFrame(tk.Frame(self.root))
     # entry_frame
     self.infoframe = InfoFrame(tk.Frame(self.root))
     # rbmix_frame
     self.rbmixframe = RBMixFrame(tk.Frame(self.root))
コード例 #8
0
 def __init__(self):
     self.root = tk.Tk()
     self.root.title(_("Funing") + " " + settings.version)
     # frame
     self.showframe = ShowFrame(tk.Frame(self.root))
     # entry_frame
     self.entryframe = EntryFrame(tk.Frame(self.root))
     # lang_combobox
     self.langcombobox = LangCombobox(self.root)
     # infoframe
     self.infoframe = InfoFrame(tk.Frame(self.root))
コード例 #9
0
 def __init__(self, frame):
     self.frame = frame
     self.about_fn_btn = Button(self.frame, text=_("About Funing"))
     # language_combobox
     self.lang_combobox_var = tk.StringVar(self.frame)
     self.lang_code = settings.lang_code
     self.lang_combobox_var.set(Language.make(self.lang_code).autonym())
     self.lang_combobox = ttk.Combobox(
         self.frame,
         textvariable=self.lang_combobox_var,
         values=tuple(self.locale_lang_display_names()),
         state="readonly",
     )
コード例 #10
0
    def __init__(self, frame):
        self.frame = frame
        self.face_show_frame = tk.Frame(self.frame)
        self.info_enter_frame = tk.Frame(self.frame)

        self.faces_frame = tk.Frame(self.frame)

        # self.curf_label = tk.Label( self.face_show_frame )
        # self.opt_frame =  tk.Frame( self.frame )
        # self.prevf_btn = tk.Button( self.opt_frame, text = _('prev_symb'))
        # self.num_label = tk.Label( self.opt_frame, text = _('*/*') )
        # self.nextf_btn = tk.Button( self.opt_frame, text = _('next_symb'))
        self.ft_sb = tk.Scrollbar(self.info_enter_frame, orient=VERTICAL)
        self.face_text = Text(self.info_enter_frame,
                              yscrollcommand=self.ft_sb.set)
        self.face_text_tip_label = Label(
            self.frame,
            text=_(
                "Write it with certain rules so that you can analyze it later"
            ),
            font=("", 10),
        )
        self.save_btn = tk.Button(self.frame, text=_("Save"))
        self.ft_sb.config(command=self.face_text.yview)
コード例 #11
0
    def change_language(self, lang):

        lang_display_name = self.rbmixfm.lang_combobox_var.get()
        new_lang_code = Language.find(lang_display_name).to_tag()
        if settings.debug:
            print(
                "new_lang_code: ",
                new_lang_code,
                "lang_code: ",
                settings.lang_code,
            )

        if new_lang_code == settings.lang_code:
            return

        restartapp = messagebox.askyesno(title=_("Restart Funing Now?"))
        if restartapp:
            settings.config_yml["lang_code"] = new_lang_code
            yaml.dump(settings.config_yml, open(settings._config_path, "w"))
            sys_executable = sys.executable
            os.execl(sys_executable, sys_executable, *sys.argv)
        pass
コード例 #12
0
    def show_info(self, label, _id, index):

        if (self.zoomed_in_face_label[0] !=
                0) and (self.zoomed_in_face_label[0] != label):
            self.restore_face_label_size(index)

        frame = self.showed_face_frames[index]
        frame = cv2.resize(frame, self.zoom_in_size)

        vid_img = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        vid_img = Image.fromarray(vid_img)
        imgtk = ImageTk.PhotoImage(image=vid_img)
        label.imgtk = imgtk
        label.configure(image=imgtk)

        self.zoomed_in_face_label = (label, index)

        info_file_path = os.path.join(settings.infos_path, _id)
        self.infofm.face_text.delete(1.0, END)

        if not os.path.exists(info_file_path):
            self.infofm.face_text.insert("1.0", _("No informations found"))

        self.infofm.face_text.insert("1.0", open(info_file_path, "r").read())
コード例 #13
0
 def show_nsrc_error(self):
     unable_open_s = _("Unable to open video source")
     messagebox.showerror(unable_open_s,
                          unable_open_s + ": " + self.showf_sv)
コード例 #14
0
    def __init__(self):
        self.mainui = MainUI()
        self.mainui.place()
        self.source = -1
        self.root_after = -1
        # face num for face_label
        self.lang_code = settings.lang_code
        self.fxfy = None
        self.image_exts = ["jpg", "png", "jpeg", "webp"]
        self.video_exts = ["mp4", "avi", "3gp", "webm", "mkv"]
        self.showf_sv = None
        self.showfm = self.mainui.showframe
        self.infofm = self.mainui.infoframe
        self.rbmixfm = self.mainui.rbmixframe
        self.about_tl = None
        # vid
        self.vid = None
        self.vid_width = 0
        self.vid_height = 0
        self.vid_fps = 0

        self.source_type = -1  # 0-> img , 1-> video

        self.cur_frame = None
        self.face_rects = []
        self.picked_face_frames = []
        self.showed_face_frames = []
        self.show_size = (200, 200)
        self.zoom_in_size = (210, 210)
        self.save_size = (100, 100)
        self.zoomed_in_face_label = (0, 0)

        self.doing = "p"  # 'p'->'pick', r->'rec'

        self.pause = False
        self.face_frames = []
        self.curf_index = 0
        # rec_result
        self.rec_gray_img = None
        # rec_faces
        self.recfs = []
        # info
        self.cur_info_id = None
        self.info_ids = []
        # cv2
        self.hff_xml_path = os.path.join(
            haarcascades, "haarcascade_frontalface_default.xml")
        self.recognizer = cv2.face.EigenFaceRecognizer_create()
        self.face_casecade = cv2.CascadeClassifier(self.hff_xml_path)
        self.face_enter_count = settings.face_enter_count
        # screen
        try:
            self.screenwidth = self.mainui.root.winfo_screenwidth()
            self.screenheight = self.mainui.root.winfo_screenheight()
        except:
            print(_("No desktop environment is detected! (^_^)"))
            exit()
        if not settings.data_empty():
            self.recognizer_train()
        self.set_ui_events()
        self.mainui.mainloop()