Я пытаюсь написать программу 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, но проблема все еще не решена.
Кто-нибудь знает, что происходит и как это исправить?
Спасибо так много!