Python 3.x OpenCV:Imshow窗口在使用destroyWindow销毁时不会第二次出现

Python 3.x OpenCV:Imshow窗口在使用destroyWindow销毁时不会第二次出现,python-3.x,opencv,websocket,imshow,Python 3.x,Opencv,Websocket,Imshow,我使用websocket request在python中运行下面的函数来打开webcam,但它只有在pyhton客户端第一次连接到服务器时才起作用。当我按下'q'并尝试在不断开连接的情况下再次调用该函数时,它会卡在cv2.imshow('frame',frame')行中,什么也没有发生 当我重新运行python代码,断开连接并再次连接到服务器时,它可以正常工作,但只有一次。请有人帮帮我 def stream(): cap = cv2.VideoCapture(0, cv2.CAP_DSH

我使用websocket request在python中运行下面的函数来打开webcam,但它只有在pyhton客户端第一次连接到服务器时才起作用。当我按下'q'并尝试在不断开连接的情况下再次调用该函数时,它会卡在cv2.imshow('frame',frame')行中,什么也没有发生

当我重新运行python代码,断开连接并再次连接到服务器时,它可以正常工作,但只有一次。请有人帮帮我

def stream():
    cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)

    while(cap.isOpened()):
        # Capture frame-by-frame
        ret, frame = cap.read()

        cv2.imshow('frame', frame)

        key = cv2.waitKey(1)
        if  key == ord('q'):
            break

    # When everything done, release the capture and destroy frame window
    cap.release()
    cv2.destroyAllWindows()

我也有类似的问题。我通过在主线程上执行所有opencv操作以及在新线程中执行所有其他操作来解决这个问题。在您的情况下,您可以维护框架字典,并在阅读后更新框架。在主线程中,维护
while(True)
循环并调用
cv2.imshow

您可以尝试显式调用namedWindow吗?您能否尝试为每个新呼叫指定一个单独的名称?您能否尝试删除视频捕获,而改用静态图像?这个想法是tgat可能是yozr captired设备在关闭和重新打开时出现问题。这项测试可以让人看到这一点。