Opencv imread () перестает работать внезапно в цикле while - PullRequest
0 голосов
/ 30 января 2020

Я пытаюсь написать программу python, которая читает кадры в формате jpg в режиме реального времени, используя функцию imread ().

Программа работает штрафами в pycharm , но это внезапно перестает работать после примерно 3000-6000 итераций (это зависит), если программа упакована с использованием pyinstaller на Windows.

Я пытался использовать cv2.VideoCapture(f"{src}/%d.jpg", cv2.CAP_IMAGES), но проблема все еще существует.

Ниже приведен фрагмент кода, использующий функцию чтения внутренних кадров imread (), которая выполняется в потоке.

 while not self.isStopTask:
                    print("Debug - 1",flush=True)
                    imgpath = abspath( join(self.src,str(CurrFrameNum)+".jpg"))
                    print("Debug - 2",flush=True)
                    frame = cv2.imread(imgpath)
                    print("Debug - 3",flush=True)
                    if frame is None:
                        print("Debug - cv2.imread() failed. frameNum =", str(CurrFrameNum), flush=True)
                        time.sleep(0.1)
                    else:
                        ...

Замечено, что поток останавливается после запуска print ("Debug - 2", flush = True) . Я предполагаю, что opencv выдает ошибку, которая приводит к тому, что поток d ie.

. Поэтому я также проверил, жив ли поток в отдельном потоке или нет. Замечено, что поток все еще жив , даже выполнение остановлено, как описано выше. Поэтому я предполагаю, что есть некоторая проблема с imread (), из-за которой поток перестает работать и зависает без каких-либо ошибок.

Я пытался обновить и понизить как pyinstaller, так и opencv, но проблема все еще не решена.

Кто-нибудь знает, что происходит и как это исправить?

Спасибо так много!

...