Открыть резюме и Ткинтер - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь загрузить видеокадр на ярлык tkinter. Я попытался запустить следующий метод. Моя веб-камера включается, но лента не загружается на этикетке. Есть ли предел временного интервала, который я должен использовать?

    self.cap = cv2.VideoCapture(0)
    self.updateCamera()


def updateCamera(self):
    # Get a frame from the video source

    ret, frame = self.cap.read()
    frame = cv2.resize(frame, (800,600))
    frame = PIL.Image.fromarray(frame)
    frame = PIL.ImageTk.PhotoImage(frame)
    self.camraLabel.configure(image=frame)
    print("Here")
    self.camraLabel.after(1000,self.updateCamera)

если я закомментирую self.camraLabel.after(1000,self.updateCamera) на этикетке появится неподвижное изображение. Не могу вспомнить, что я сделал неправильно.

1 Ответ

0 голосов
/ 26 июня 2019

Вы создали рекурсивную функцию, которая никогда не закончится.Это плохо, вы видите, как функция никогда не выйдет?Это также предотвращает обновление ярлыка, поэтому вы никогда не увидите изображение.Вместо этого вам следует использовать цикл на основе времени, например, такой как:

    import time
    import cv2

    # store current time
    curr_time = time.time()
    # get camera 
    self.cap = cv2.VideoCapture(0)

    def updateCamera(self):
        # Get a frame from the video source
        ret, frame = self.cap.read()
        frame = cv2.resize(frame, (800,600))
        frame = PIL.Image.fromarray(frame)
        frame = PIL.ImageTk.PhotoImage(frame)
        self.camraLabel.configure(image=frame)
        print("Here")

    # loop forever
    while True:
            # check if the frame needs to be updated
            if time.time()-curr_time > 1:
                    # if more then a second has passed,
                    # get a new frame and update curr_time
                    self.updateCamera()
                    curr_time = time.time()

            # do other stuf

Отказ от ответственности: непроверенный код

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...