为什么我不能使用队列显示返回的图像

时间:2019-03-17 09:22:23

标签: python multithreading opencv

我试图借助线程从网络摄像头捕获帧,然后通过队列将其返回。运行代码时,我得到的返回类型为np.array,但显示时得到的是回调警告,而不是输出。

import cv2
cap = cv2.VideoCapture(0)
import queue
import threading

def capture(out_queue):
  while(True):
     frame = cap.read()[1]
     cv2.imshow('window', frame)
     if cv2.waitKey(1) & 0xFF == ord('q'):
        out_queue.put(frame)
        break

my_queue_1 = queue.Queue()
t1 = threading.Thread(target=capture, args=(my_queue_1,))
t1.start()
t1.join()
ret1 = my_queue_1.get()
print(type(ret1))
cv2.imshow('returned', ret1)
cv2.destroyAllWindows()
cap.release()

我得到的类型为类'numpy.ndarray'& [WARN:0]终止异步回调

1 个答案:

答案 0 :(得分:0)

编辑:忘记包含cv2.waitkey()。问题解决了