Python OpenCV--MAC 网络摄像头没有关闭

Python OpenCV--MAC WebCam doesn't close

我是运行一个人脸识别代码,我的问题是在运行代码之后,我的网络摄像头没有关闭。绿灯仍然亮着,为了关闭它,我必须关闭我的电脑才能让摄像头正常工作。 你有什么建议,为什么会这样?

from imutils.video import VideoStream
import argparse, imutils, time, cv2, os, sys
import time
import smtplib, os
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.message import Message
from email.mime.audio import MIMEAudio
from email import encoders


   detector = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
# vs = VideoStream(src=0).start()
vs = VideoStream
vs(src=0).start()
# time.sleep(2.0)
total = 0

while True:
    frame = vs.read()
    orig = frame.copy()
    frame = imutils.resize(frame, width=600)
    rects = detector.detectMultiScale(
        cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY), scaleFactor=1.1, 
        minNeighbors=5, minSize=(30, 30))
    for (x, y, w, h) in rects:
        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
        if rects is not None and total <5:
            p="/Users/Desktop/atentie/mail/"+str(total)+".png"
            cv2.imwrite(p, orig)
            total+=1

    break   

cv2.destroyAllWindows()
vs(src=0).stop()
time.sleep(5)
imutils 库中的

VideoStream 是一个 class 对象,因此当您将其分配给 vs 时,您应该将其视为一个对象。

修复如下:

#--- import libraries ---
from imutils.video import VideoStream

vs = VideoStream
#--- start the video stream ---
vs(src=0).start()

#--
# rest of your program 
#--

#--- stop the video stream ---
vs(src=0).stop()