我正在运行一个面部识别代码,我的问题是运行该代码后,我的网络摄像头无法关闭。绿灯仍处于激活状态,为了将其关闭,我必须关闭计算机以使凸轮正常运行。 您有什么建议,为什么会这样?
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)
答案 0 :(得分:0)
VideoStream
库中的 imutils
是一个类对象,因此,将其分配给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()