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 无法创建按钮_Python_Opencv_Tkinter - Fatal编程技术网

Python 无法创建按钮

Python 无法创建按钮,python,opencv,tkinter,Python,Opencv,Tkinter,我正在使用python opencv tkinter创建一个用于实时人脸检测的简单应用程序。我可以做实时人脸检测,但当我试图创建一个按钮来启动实时提要时,它甚至没有执行程序。有人能帮我吗 from ttk import * import Tkinter as tk from Tkinter import * import cv2 from PIL import Image, ImageTk import os import numpy as np face_classifier = cv2.C

我正在使用python opencv tkinter创建一个用于实时人脸检测的简单应用程序。我可以做实时人脸检测,但当我试图创建一个按钮来启动实时提要时,它甚至没有执行程序。有人能帮我吗

from ttk import *
import Tkinter as tk
from Tkinter import *
import cv2
from PIL import Image, ImageTk
import os
import numpy as np

face_classifier = cv2.CascadeClassifier('Haarcascades/haarcascade_frontalface_default.xml')
global last_frame                                      #creating global variable
last_frame = np.zeros((480, 640, 3), dtype=np.uint8)
global cap
cap = cv2.VideoCapture(0)

def show_vid():                                        #creating a function

    if not cap.isOpened():                             
        print("cant open the camera")

    flag, frame = cap.read()
    frame = cv2.flip(frame, 1)

    if flag is None:
        print "Major error!"
    elif flag:
        global last_frame
        last_frame = frame.copy()

    pic = cv2.cvtColor(last_frame, cv2.COLOR_BGR2GRAY)     
    faces = face_classifier.detectMultiScale(pic, 1.3, 5)

    for (x,y,w,h) in faces:
        x = x - 50
        w = w + 50
        y = y - 50
        h = h + 50
        cv2.rectangle(last_frame,(x,y),(x+w,y+h),(255,0,0),2)

    last_frame=cv2.cvtColor(last_frame, cv2.COLOR_BGR2GRAY)
    img = Image.fromarray(last_frame)
    imgtk = ImageTk.PhotoImage(image=img)
    lmain.imgtk = imgtk
    lmain.configure(image=imgtk)
    lmain.after(10, show_vid)

if __name__ == '__main__':
    root=tk.Tk()                                    
    lmain = tk.Label(master=root)
    lmain.grid(column=0, rowspan=4, padx=5, pady=5)
    root.title("Live face detection")  
    button = Button(root, text = "Start", command=show_vid).pack()
    #show_vid()
    root.mainloop()                                  
   cap.release()

当我注释按钮行和未注释的
show\u vid()
line时,实时人脸检测工作,但当我做相反的操作时,它不工作

您应该将行的.pack()部分替换为按钮(row=yourrow,column=yourcolumn sticky=E)指定放置按钮的列和行的位置

它是如何工作的?您有任何我们可以看到的回溯吗?不要将
grid
pack
混在一起。谢谢大家的帮助,成功了,到底是什么解决了这个问题?