Python opencv视频流vs.read()第一次运行后被无限卡住

问题描述 投票:0回答:1

我正在python上使用opencv,并且遇到了vidoestream.read()函数卡住的问题。这是一些原型代码:

requirements.txt

opencv-contrib-python==4.1.1.26

application.py

import cv2

def run_analysis(path_to_video):
    vs = cv2.VideoCapture(path_to_video)

    while True:
         frame = vs.read()
         if frame is None:
             break
         do_stuff_with_frame(frame)

    vs.release()

此代码在我的Mac上一直有效。仅当我将其作为Flask应用程序部署到Elastic Beanstalk(在Red Hat Linux上运行)时,它才第一次起作用。我已经在github问题中看到了一些东西,这些东西可能暗示vs.release()无法释放文件指针,或者存在内存泄漏,但是我不太了解这些概念。

即使我无法获得为什么的答案,我也对采用蛮力的方法感到满意。

python opencv
1个回答
0
投票

根据openCV web site

如果没有抓取任何帧(相机已断开连接,或者视频文件中没有其他帧),则方法返回false,函数返回NULL指针。

您可以在测试'无'后测试'frame'是否为假。如有疑问,请'print(frame)'

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.