356: error: (-215:Assertion failed) size.width>0 && size.height>0 in function ‘cv::imshow’
import cv2
cap = cv2.VideoCapture(0)
cap.open(0)
while(cap.isOpened()):
ret, frame = cap.read()
cv2.imshow('frame', frame)
cv2.imwrite("1.jpg", frame)
c = cv2.waitKey(1)
if c == 27: # ESC键
break
cap.release()
cv2.destroyAllWindows()
这段代码的作用是从摄像头视频中截取一帧保存到本地,但是每次都是可以用一次,第二次再运行就会出现上面的报错,从网上找了一圈大家都是错加载路劲错了,我很纳闷,我都没有加载路径。
后来研究了老半天才发现是因为下面红框里面的如果不关掉,下次打开就会报错。
我思考了一下,他上面说的是Assertion failed——声称错误,其实也算是一种加载错误,因为上次的窗口还没有完全释放导致摄像头还在占用中,大家仔细观察就会发现,当上面的红框不关掉时摄像头一直亮着说明一直被占用。