OpenCV 无法正常关闭摄像头窗口

请教各位,我通过如下代码成功调用笔记本摄像头,按下 ESC 后摄像头关闭了,但窗口无法正常关闭,直接卡死,若强制关闭窗口,则内核直接挂掉(如图)。
在Windows上是完美运行的,但是这会儿MacOs上就出现了这个问题,网上搜了好久也没找到解决办法。🥲
(Mac M1;Python3.8;opencv 4.6.0.66)

import cv2

cap=cv2.VideoCapture(0) 
cv2.namedWindow('Camera', cv2.WINDOW_NORMAL)

cap.set(3,1964)
cap.set(4,3024)

while cap.isOpened():
    success, frame = cap.read() 
         
    frame = cv2.flip(frame, 1)
        
    cv2.imshow('Camera', frame)
    
    if (cv2.waitKey(1) == 27):   
       break  

cap.release()   
cv2.destroyAllWindows() 

img

img

你得建立一个缓冲区,然后再从缓冲区采集图像到窗口显示,并且关闭窗口前先释放内存和关闭摄像头

import os
#……
os.system("taskkill /PID "+str(os.getpid())+" /T /F") #kill myself

不要企图优雅的结束(因为这是不可能办到的)
而要在烂的不能再烂的摊子上也能重整河山!

img

cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.waitKey(10)试试——或者# cap.set(100, 1)可能是因为耗内存太大导致内核崩溃。

是不是有内存没清理完导致的不能优雅结束呢?

兄弟,你的代码我在统信UOS上测试是正常的,没有MacOS,无法测试..