Python 再次按下按钮1时,Tkinter回调中出现异常
我有一个问题需要你的帮助,我正在做基于opencv的人脸检测,这是一步一步完成的。 1.根据id获取人员信息 2.取人的脸 3.训练 在我得到第一个人的信息后,我做了第二步来得到那个人的脸 下一步是获取第二个人的信息,但在第二个人脸所在的部分失败了。 我怎样才能修好它,请帮帮我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
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——我在代码末尾写下的错误,我不知道错误的原因,因为当我得到第一个人的信息时,它仍然有效,但当我得到第二个人的信息时,它不起作用。我想它有一个面部图像捕获的错误,但我不知道如何修复它