多线程时cv2图像显示不起作用

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

我正在尝试将图像放在屏幕上同时捕获网络摄像头(我正在使用MAC)。因此,我开始了两个线程:一个用于捕获视频,另一个用于在屏幕上显示图像:

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

    webcam_thread.start()
    images_thread.start()

视频捕获工作正常;我没有使用线程时图像显示正常(当这是唯一的过程时)。但是,当使用mutli-Threading时,所有都呈现在白色框中,而不是图像本身。这是图像代码:

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个回答
2
投票

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

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