当我们在多线程环境下使用 OpenCV 库的 cv2.imshow() 函数时,可能会遇到白屏问题。该问题通常表现为:在主线程中启动一个视频捕捉线程和一个图像显示线程,视频捕捉线程能够正常工作,但图像显示线程却只能显示一个白框,而无法正确显示图像。
2、解决方案
为了解决该问题,我们可以使用以下解决方案:
- 使用队列(Queue):
- 在主线程中创建一个队列,用于在视频捕捉线程和图像显示线程之间传递图像数据。
- 视频捕捉线程将捕获的图像数据放入队列中。
- 图像显示线程从队列中取出图像数据并使用 cv2.imshow() 函数显示图像。
import cv2
import threading
import queue
# 创建队列
image_queue = queue.Queue()
# 视频捕捉线程
def webcam_thread():
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
# 将捕获的图像数据放入队列中
image_queue.put


8125

被折叠的 条评论
为什么被折叠?



