Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 再次按下按钮1时,Tkinter回调中出现异常_Python_Opencv - Fatal编程技术网

Python 再次按下按钮1时,Tkinter回调中出现异常

Python 再次按下按钮1时,Tkinter回调中出现异常,python,opencv,Python,Opencv,我有一个问题需要你的帮助,我正在做基于opencv的人脸检测,这是一步一步完成的。 1.根据id获取人员信息 2.取人的脸 3.训练 在我得到第一个人的信息后,我做了第二步来得到那个人的脸 下一步是获取第二个人的信息,但在第二个人脸所在的部分失败了。 我怎样才能修好它,请帮帮我 enter code here` db = mysql.connector.connect(**config) db.set_converter_class(NumpyMySQLConve

我有一个问题需要你的帮助,我正在做基于opencv的人脸检测,这是一步一步完成的。 1.根据id获取人员信息 2.取人的脸 3.训练 在我得到第一个人的信息后,我做了第二步来得到那个人的脸 下一步是获取第二个人的信息,但在第二个人脸所在的部分失败了。 我怎样才能修好它,请帮帮我

        enter code here` db = mysql.connector.connect(**config)
        db.set_converter_class(NumpyMySQLConverter)
        
        # connect to mysql
        def get_db():
            global db
            if db.is_connected():
                pass
            else:
                db = mysql.connector.connect(**config)
        def insertOrUpdate():
            # ket noi db
            # kiem tra id nhap vao ton tai hay chua ?
            get_db()
            cid = ent.get()
            cname = ent2.get()
            birthday = ent7.get_date()
            ccountry = ent4.get()
            carea = ent5.get()
            cphone = ent6.get()
            if (cid == "" or cname == "" or birthday=="" or ccountry=="" or carea==""):
                messagebox.showinfo("Error", "field is not empty")
            # cphone = re.compile(r'^(?:\+?44)?[07]\d{9,13}$')
            # if not cphone.search():
            #     messagebox.showinfo("Error", "field is not empty")
            mycursor = db.cursor()
            sql = ("select * from db_people WHERE id="+ str(cid))
            mycursor.execute(sql,cid)
            myresult = mycursor.fetchall()
            print(myresult)
            isRecordExist = 0
            # duyet hang tren bang ghi
            for row in myresult:
                print("chay khong")
                isRecordExist =1
            print(isRecordExist)
            if(isRecordExist == 0):
                # cid = ent.get()
                # cname=ent2.get()
                # birthday = ent7.get_date()
                # ccountry = ent4.get()
                # carea =ent5.get()
                # cphone= ent6.get()
                # print(cid)
                if(radio.get() =="Male"):
                    sql = "INSERT INTO db_people(id,user_name,gender,dateOfBirth,country,area,phone) 
                           VALUES(%s,%s,%s,%s,%s,%s,%s)"
                    val = (cid, cname, str(radio.get()), birthday,ccountry, carea, cphone)
                else:
                    sql = "INSERT INTO db_people(id,user_name,gender,dateOfBirth,country,area,phone) 
                           VALUES(%s,%s,%s,%s,%s,%s,%s)"
                    val = (cid, cname, str(radio.get()), birthday,ccountry, carea, cphone)
            else:
                query = "UPDATE db_people SET user_name='" + str(user_name)+"' WHERE id=" + str(cid)
        
            print("done")
            # thuc thi lenh
            mycursor.execute(sql,val)
            db.commit()
            messagebox.showinfo("Message", "Success")
            db.close()
        
           # load thu vien opencv
           face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades+ 
           "haarcascade_frontalface_default.xml")
           cap = cv2.VideoCapture(0)
        
        # UI
        win = Tk()
        
        frame = tk.Frame(master=win, width=400, height=800)
        frame.pack()
        label0 = tk.Label(master=frame, text="Employee Infomation ")
        label0.place(x=100, y=20)
        
        
        id = StringVar()
        c_id = StringVar()
        label1 = Label(frame,textvariable=id)
        id.set("Enter id")
        label1.place(x =0 ,y =60)
        ent = Entry(frame,textvariable=c_id,width=40)
        ent.place(x =70 , y=60)
        
        
        user_name = StringVar()
        c_name = StringVar()
        label2 = Label(frame,textvariable=user_name)
        user_name.set("Enter name")
        label2.place(x =0 ,y =100)
        ent2 = Entry(frame,textvariable=c_name,width=40)
        ent2.place(x =70 , y=100)
        
        
        gender = StringVar()
        radio = tk.StringVar()
        label3 = Label(frame,textvariable=gender)
        gender.set("Gender")
        label3.place(x =0 ,y =140)
        r1 = Radiobutton(win,text="Male",variable= radio,value="Male")
        r1.pack()
        r1.place(x =120 , y=140)
        r2 = Radiobutton(win,text="Female",variable= radio,value="Female")
        r2.pack()
        r2.place(x =180 , y=140)
        
        dayOfbirh = StringVar()
        c_birth = 'm/d/y'
        label7 = Label(frame,textvariable=dayOfbirh)
        dayOfbirh.set("DayOfBirth")
        label7.place(x =0 ,y =180)
        
        ent7 = DateEntry(frame,date_pattern=c_birth,background="blue",foreground="white",borderwidth = 
               2,width=37)
        ent7.place(x =70 ,y =180)
        
        
        area = StringVar()
        c_area = StringVar()
        label5 = Label(frame,textvariable=area)
        area.set("Work place")
        label5.place(x =0 ,y =220)
        ent5 = Entry(frame,textvariable=c_area,width=40)
        ent5.place(x =70 ,y =220)
        
        country = StringVar()
        c_country = StringVar()
        label4 = Label(frame,textvariable=country)
        country.set("Address")
        label4.place(x =0 ,y =300)
        ent4 = Entry(frame,textvariable=c_country,width=40)
        ent4.place(x =70 ,y =300)
        
        phone = StringVar()
        c_phone = StringVar()
        label6 = Label(frame,textvariable=phone)
        phone.set("Phone")
        label6.place(x =0 ,y =260)
        ent6 = Entry(frame,textvariable=c_phone,width=40)
        ent6.place(x =70 ,y =260)
        
        def Trainning():
            import trainData
        def logout():
            import detect_mask_video
            # win.destroy()
            # import login
        # lay db tu camera
        def opencam():
            sampleNum = 0
            while(True):
                ret, frame = cap.read()
                # chuyen anh thanh mau xam de training
                gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        
                faces = face_cascade.detectMultiScale(gray,1.3, 5)
        
                for (x, y, w, h) in faces:
                    cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
                    # tao folder dataset va kiem tra
                    if os.path.exists('dataset/image_trainning'):
                        sampleNum += 1
                    id = c_id.get()
                    cv2.imwrite('dataset/image_trainning/User.' + str(id) + '.' + str(sampleNum) + 
                     '.jpg', gray[y: y + h, x: x + w])
        
                cv2.imshow('frame', frame)
                cv2.waitKey(1)
        
                if sampleNum > 10:
                    break;
            cap.release()
            cv2.destroyAllWindows()
        btn1 = Button(frame,text="1.Get Infor", command=insertOrUpdate).place(x =5 ,y =350)
        btn3 = Button(frame,text="3.Trainning", command=Trainning).place(x =170 ,y =350)
        btn4 = Button(frame,text="4.Camera", command=logout).place(x =260 ,y =350)
        btn2 = Button(frame,text="2.Get Image", command=opencam).place(x =80 ,y =350)
        win.title("Information employee")
        win.geometry("490x400")
        win.resizable(False,False)
        win.mainloop()


this is error: 
Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\PC\anaconda3\lib\tkinter\__init__.py", line 1883, in __call__
    return self.func(*args)
  File "C:/Users/PC/Desktop/bk/Capstone2_backup/getData.py", line 183, in opencam
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-j8nxabm_\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

“它失败”是什么意思?它是怎么失败的?它抛出了一个错误吗?如果是,错误是什么?请试着把问题中的代码简化为Bryan Oakley——我在代码末尾写下的错误,我不知道错误的原因,因为当我得到第一个人的信息时,它仍然有效,但当我得到第二个人的信息时,它不起作用。我想它有一个面部图像捕获的错误,但我不知道如何修复它