无法在Python中使用OpenCV检测面部和眼睛 [英] Unable to detect face and eye with OpenCV in Python

查看:172
本文介绍了无法在Python中使用OpenCV检测面部和眼睛的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此代码用于使用网络摄像头检测面部和眼睛,但出现此错误

This code is to detect face and eyes using webcam but getting this error

Traceback (most recent call last):  
  File "D:/Acads/7.1 Sem/BTP/FaceDetect-master/6.py", line 28, in <module>  
    eyes = eyeCascade.detectMultiScale(roi)  
NameError: name 'roi' is not defined

但是当我使用此代码时,请务必检测图像中的脸部和眼睛,使其正常工作而不会出现任何错误

but when i use this code do detect faces and eyes in a image its working properly without any error

import matplotlib
import matplotlib.pyplot as plt
import cv2
import sys
import numpy as np
import os

faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eyeCascade= cv2.CascadeClassifier('haarcascade_eye.xml')

video_capture = cv2.VideoCapture(0)

while True:
    # Capture frame-by-frame
    ret, frame = video_capture.read()

    faces = faceCascade.detectMultiScale(frame)

    for (x, y, w, h) in faces:
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
        roi = frame[y:y+h, x:x+w]

    eyes = eyeCascade.detectMultiScale(roi)
    for (ex,ey,ew,eh) in eyes:
        cv2.rectangle(roi,(ex,ey),(ex+ew,ey+eh), 255, 2)

    cv2.imshow('Video', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

video_capture.release()
cv2.destroyAllWindows()

推荐答案

我认为这只是缩进的问题.

I think it is just a problem of indentation.

roi不在范围内.

for (x, y, w, h) in faces:
    cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
    roi = frame[y:y+h, x:x+w]

    # eyes detection runs for each face
    eyes = eyeCascade.detectMultiScale(roi)
    for (ex,ey,ew,eh) in eyes:
        cv2.rectangle(roi,(ex,ey),(ex+ew,ey+eh), 255, 2)

这篇关于无法在Python中使用OpenCV检测面部和眼睛的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆