[网络摄像头窗口在尝试检测到面部时崩溃

问题描述 投票:0回答:1

我正在尝试制作一个简单的haar级联程序以检测人脸。

faceCascade = cv2.CascadeClassifier('D:\\Python\\Python37\\Lib\\site-packages\\cv2\\data\\haarcascade_frontalcatface.xml')
body_cascade = cv2.CascadeClassifier('haarcascade_upperbody.xml')
video_capture = cv2.VideoCapture(0)
img_counter = 0

while True:
    # Capture frame-by-frame
    ret, frame = video_capture.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = faceCascade.detectMultiScale(
        gray,
        scaleFactor=1.5,
        minNeighbors=5,
        minSize=(30, 30),
        flags=cv2.CASCADE_SCALE_IMAGE
    )
    for (x, y, w, h) in faces:
        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
    cv2.imshow('FaceDetection', frame)
    k = input()
    # ESC Pressed
    if k % 256 == 27:
        break

video_capture.release()
cv2.destroyAllWindows() 

但是每次启动它时,我的网络摄像头窗口都会冻结并崩溃:(我的电脑肯定足够强大,为什么会发生?

python opencv cv2 haar-classifier
1个回答
0
投票

我对您的代码进行了很少的更改。尝试下面的代码,它将像魅力一样工作:)

import cv2
#faceCascade = cv2.CascadeClassifier('D:\\Python\\Python37\\Lib\\site-packages\\cv2\\data\\haarcascade_frontalcatface.xml')
faceCascade = cv2.CascadeClassifier('D:\\Python\\Python37\\Lib\\site-packages\\cv2\\data\\haarcascade_frontalface_default.xml')

body_cascade = cv2.CascadeClassifier('haarcascade_upperbody.xml')
video_capture = cv2.VideoCapture(0)
img_counter = 0

while True:

    # Capture frame-by-frame
    ret, frame = video_capture.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = faceCascade.detectMultiScale(
        gray,
        scaleFactor=1.5,
        minNeighbors=5,
        minSize=(30, 30),
        flags=cv2.CASCADE_SCALE_IMAGE
    )
    for (x, y, w, h) in faces:
        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
    cv2.imshow('FaceDetection', frame)

    #k = input()
    k = cv2.waitKey(1) & 0xFF
    if k == 27:
        break
    # ESC Pressed
    # if k % 256 == 27:
        # break


video_capture.release()
cv2.destroyAllWindows() 
© www.soinside.com 2019 - 2024. All rights reserved.