【问题标题】:cv2 image show doesn't work when multithreading多线程时 cv2 图像显示不起作用
【发布时间】:2018-08-12 07:15:08
【问题描述】:

我试图在捕获网络摄像头时将图像放在屏幕上(我使用的是 MAC)。因此,我启动了两个线程:一个用于捕获视频,另一个用于在屏幕上呈现图像:

    webcam_thread = self.init_webcam_thread()
    images_thread = self.init_images_thread()

    webcam_thread.start()
    images_thread.start()

视频捕捉工作正常;当我不使用线程时,图像显示正常工作(当这是唯一的过程时)。但是,当使用多线程时,所有内容都显示在一个白框中,而不是图像本身。 这是图片代码:

for pic_idx , pic_name in enumerate(pics):
while True:
    image = cv2.imread(pic_name, 0)
    if image is not None:
       cv2.imshow('image', image)
       k = cv2.waitKey(2000)

同样,当我不使用多线程时,我所做的只是展示图片(没有视频捕获),它运行良好。可能是什么原因?

【问题讨论】:

标签: python multithreading image video cv2


【解决方案1】:

作为一般规则,您应该将与 UI 交互的所有代码保留在主线程上。您可能需要考虑使用队列,主线程从队列中提取图像以显示它们,而其他线程在需要显示图像时将图像推入队列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2013-08-09
    • 1970-01-01
    • 2019-10-31
    • 2020-11-01
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多