【问题标题】:Python opencv2 haar classifierPython opencv2 haar 分类器
【发布时间】:2018-09-07 15:56:24
【问题描述】:

我正在尝试结合使用两个脚本来让面部识别与来自笔记本电脑网络摄像头的实时视频一起工作。我有一个可用的 opencv2 脚本,可与我的网络摄像头一起查看实时画面,另一个是面部识别脚本,在 jpeg 静止图像上带有 haar 分类器。我正在使用 Python 3.6 IDE,打开 cv2。下面的这个脚本适用于通过我的笔记本电脑网络摄像头查看实时提要。

import numpy as np
import cv2, time

video = cv2.VideoCapture(0)  
a = 0

while True:

    a = a + 1    
    check, frame = video.read()

    print(check)
    print(frame)

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow("Capturing", gray)
    cv2.waitKey(1)

    key = cv2.waitKey(1)    
    if key == ord('q'):
        break

print(a)

video.release()

我得到了这个脚本,它可以在面部周围绘制一个框,以用于具有静止 .jpeg 图像上的函数的 haar 分类器。我将如何将这两个脚本与使用 haar 分类器在实时视频源上进行面部识别结合起来? haar 分类器 XML 和 jpeg 是我本地 PC 目录中的文件。

import cv2
import matplotlib.pyplot as plt
import time 



def detect_faces(f_cascade, colored_img, scaleFactor = 1.1):
    img_copy = colored_img.copy()          
    gray = cv2.cvtColor(img_copy, cv2.COLOR_BGR2GRAY)           
    faces = f_cascade.detectMultiScale(gray, scaleFactor=scaleFactor, minNeighbors=5);           
    for (x, y, w, h) in faces:
        cv2.rectangle(img_copy, (x, y), (x+w, y+h), (0, 255, 0), 2)               
    return img_copy



test2 = cv2.imread('C:/Python/opencv/sAndb.jpg')
haar_face_cascade = cv2.CascadeClassifier('C:/Python/opencv/opencv-master/opencv-master/data/haarcascades/haarcascade_frontalface_alt.xml')
faces_detected_img = detect_faces(haar_face_cascade, test2)
cv2.imshow('Faces', faces_detected_img)

【问题讨论】:

    标签: python python-3.x opencv haar-classifier


    【解决方案1】:

    试试这个:

    import numpy as np
    import cv2, time
    import matplotlib.pyplot as plt
    
    haar_face_cascade = cv2.CascadeClassifier('C:/Python/opencv/opencv-master/opencv-master/data/haarcascades/haarcascade_frontalface_alt.xml')
    video = cv2.VideoCapture(0)  
    a = 0
    
    while True:
    
        a = a + 1    
        check, frame = video.read()
    
        print(check)
        print(frame)
    
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        faces = f_cascade.detectMultiScale(gray, scaleFactor=scaleFactor, minNeighbors=5);
        for (x, y, w, h) in faces:
            cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 0, 255), 2)
    
    
        cv2.imshow("Face Detector", frame)
        cv2.waitKey(1)
    
        key = cv2.waitKey(1)    
        if key == ord('q'):
            break
    
    print(a)
    
    video.release()
    

    【讨论】:

    • 感谢您的帖子... f_cascade 的初始错误未定义,因此我将循环内的整个 faces 替换为 faces = haar_face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5); 但现在我收到 cv2 错误 @ 987654325@有什么想法吗?打印帧和检查正在工作我可以看到视频源的矩阵
    • 实际上,(-215) 错误是我的脚本中的一个错字... XML 在文件目录路径名中没有正确引用... 它工作得很好!谢谢!!!!
    猜你喜欢
    • 2014-10-24
    • 2012-06-25
    • 2015-01-14
    • 2015-09-18
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 2014-07-15
    • 2015-02-21
    相关资源
    最近更新 更多