Чтение cv2 с веб-камеры тормозит, когда окно не сфокусированоPython

Программы на Python
Anonymous
Чтение cv2 с веб-камеры тормозит, когда окно не сфокусировано

Сообщение Anonymous »

У меня возникли проблемы с записью с веб-камеры из-за того, что частота видео падала с 25/30 кадров в секунду до 10 кадров в секунду, что значительно ускоряло видео.
После многих попыток оказывается, что виновником (в MS Windows 10/11) является просто фокусировка окна, когда фокусируется окно, отображающее записи с помощью cv2 imshow() (тот, к которому прикреплена клавиша ожидания), веб-камеры занимают 0,01-0,03 секунд, чтобы получить новый кадр с помощью cap.read(), однако, когда окно не сфокусировано, время доходит до 0,07-0,11 секунды, а fps падает до 10.
Вы можете увидеть видео такого поведения здесь:

Упрощенный код выглядел так:

Код: Выделить всё

       while True:
camlog.debug("camera loop start %d, %s" % (framecount, str(datetime.now())))
stream_ok, frame = webcam.read()
if pipeargs.source2 is not None:
stream_ok2, frame2 = webcam2.read()
else:
stream_ok2 = True
camlog.debug("camera read %s, %s" % (stream_ok, str(datetime.now())))
if stream_ok and stream_ok2:
framecount += 1
camlog.debug("image show %s" % str(datetime.now()))
cv2.imshow(self.tablename, frame)
video.write(frame)
if cv2.waitKey(1) & 0xFF == 27: break
Итак, вопрос: могу ли я присвоить окну приоритет, аналогичный тому, как если бы окно было свернуто, когда оно свернуто?>

Подробнее здесь: https://stackoverflow.com/questions/789 ... ot-focused

Вернуться в «Python»