首页 > 解决方案 > 与线程一起使用时,cv2 imshow 在关闭并再次打开后不再打开窗口

问题描述

在下面的示例代码中,

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() 时,它不会打开一个窗口。这里有什么问题?

标签: pythonpython-3.xmultithreadingopencv3.0cv2

解决方案


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

看看一个类似的问题


推荐阅读