请教各位,我通过如下代码成功调用笔记本摄像头,按下 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()
你得建立一个缓冲区,然后再从缓冲区采集图像到窗口显示,并且关闭窗口前先释放内存和关闭摄像头
import os
#……
os.system("taskkill /PID "+str(os.getpid())+" /T /F") #kill myself
不要企图优雅的结束(因为这是不可能办到的)
而要在烂的不能再烂的摊子上也能重整河山!
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.waitKey(10)试试——或者# cap.set(100, 1)可能是因为耗内存太大导致内核崩溃。
是不是有内存没清理完导致的不能优雅结束呢?
兄弟,你的代码我在统信UOS上测试是正常的,没有MacOS,无法测试..