【问题标题】:Unable to start camera capture in Python-OpenCV (cv2) using a non-main thread无法使用非主线程在 Python-OpenCV (cv2) 中开始摄像头捕获
【发布时间】:2013-12-25 02:16:34
【问题描述】:

我有一些 python-opencv (cv2) 代码可以打开视频捕获设备(相机):

self.capture = cv2.VideoCapture(device)

如果我从 python 主线程调用此代码,VideoCapture 启动正常;但是,如果我从非主线程调用此设置代码,相机将永远不会打开。 VideoCapture() 调用永远不会返回。我通过简单地创建一个后台线程:

run_thread = threading.Thread(target=self.run)
run_thread.start()

这仅仅是 OpenCV/cv2 中的一个错误,还是我忽略了 python 线程的限制?

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    This SO post 非常概括地提到这是openCV 的限制。此外,showwaitKey 方法存在此约束。

    这个official code sample可以提供一些关于python-openCV多线程的想法。

    【讨论】:

    • 其他 SO 帖子似乎已过时或不正确,至少对于在 OSX 上运行的 OpenCV 2.4.6,我可以在后台线程中捕获帧,我只是无法启动 VideoCapture除了主线程之外的任何东西。无论如何,谢谢你的链接。
    • 官方代码示例现在在这里:github.com/opencv/opencv/blob/master/samples/python/…
    猜你喜欢
    • 2018-04-12
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    • 2012-01-28
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 2015-08-18
    相关资源
    最近更新 更多