OpenCV3 Python 语言实现在运用camera.release()遇到的坑

在使用OpenCV    camera.release()函数中遇到的一个坑,坑了我N久时间。

出现错误代码的源代码:

import cv2
cap = cv2.VideoCapture(0)
while True:
    ret,frame = cap.read()
    cv2.imshow("camera",frame)
    k = cv2.waitKey(1)&0xff
    if k==27:
        break
    cap.release()
    cv2.destroyAllWindows()

在运行这段代码时,会报错:

C:\Users\John\AppData\Local\Programs\Python\Python36-32\python.exe G:/Python_work/test/cameraRlease.py
OpenCV(3.4.1) Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow, file D:\Build\OpenCV\opencv-3.4.1\modules\highgui\src\window.cpp, line 364
Traceback (most recent call last):
  File "G:/Python_work/test/cameraRlease.py", line 5, in
    cv2.imshow("camera",frame)
cv2.error: OpenCV(3.4.1) D:\Build\OpenCV\opencv-3.4.1\modules\highgui\src\window.cpp:364: error: (-215) size.width>0 && size.height>0 in function cv::imshow

报错原因分析:

  在编入代码过程中,将cap.release()与cv2.destroyAllWindows()放入了while循环体内,所以一旦调用cap,随即就释放cap,所以报出错误代码,请记住:cap.release()与cv2.destroyAllWindows()只能放在while循环体外。

正确代码:

import cv2
cap = cv2.VideoCapture(0)
while True:
    ret,frame = cap.read()
    cv2.imshow("camera",frame)
    k = cv2.waitKey(1)&0xff
    if k==27:
        break
cap.release()#需要放置在while循环体外
cv2.destroyAllWindows()#需要放置在while循环体外

 

你可能感兴趣的:(OpenCV3 Python 语言实现在运用camera.release()遇到的坑)