与线程一起使用时,cv2 imshow在关闭并再次打开后不会再次打开窗口

时间:2018-12-30 16:56:49

标签: python python-3.x multithreading opencv3.0 cv2

在下面的示例代码中,

import cv2
from threading import Thread

class Person_Item_Association(object):
    def __init__(self):
        self.stop = False

    def start_camera(self):
        self.stop =False
        camera_thread = Thread(target=self.start_analysis)
        camera_thread.start()

    def stop_camera(self):
        self.stop = True

    def start_analysis(self):
        cap = cv2.VideoCapture(0)

        while not self.stop:
            ret,image = cap.read()
            cv2.imshow("frame",image)
            cv2.waitKey(1)

        cap.release()
        print("resource released")
        cv2.destroyAllWindows()

我按以下顺序进行, 调用obj.start_camera(),obj.stop_camera(),cv2.imshow()打开一个窗口, 但是当我再次做obj.start_camera()和obj.stop_camera()时,它没有打开窗口。 这是怎么了?

1 个答案:

答案 0 :(得分:0)

您可以使用multiprocessing模块而不是threading模块来缓解此问题。 但是我仍然找不到如何使用threading解决此问题的方法。

看看类似的question