Python 如何使用Haar cascade进行人脸检测,如何使用kalman滤波器进行跟踪?
我是计算机视觉新手,我正在尝试使用haar cascade进行人脸检测和卡尔曼滤波进行跟踪,我打算在raspberry pi 3B上运行代码。因此,无法使用任何深度学习方法进行跟踪。 如何在代码中使用cv2.kalmanfilter()()进行跟踪并为遍历路径画一条线? 如果有人能给我指点,那将是很大的帮助 我的代码是:Python 如何使用Haar cascade进行人脸检测,如何使用kalman滤波器进行跟踪?,python,opencv,kalman-filter,opencv-python,haar-classifier,Python,Opencv,Kalman Filter,Opencv Python,Haar Classifier,我是计算机视觉新手,我正在尝试使用haar cascade进行人脸检测和卡尔曼滤波进行跟踪,我打算在raspberry pi 3B上运行代码。因此,无法使用任何深度学习方法进行跟踪。 如何在代码中使用cv2.kalmanfilter()()进行跟踪并为遍历路径画一条线? 如果有人能给我指点,那将是很大的帮助 我的代码是: from __future__ import print_function import numpy as np import cv2 from imutils.video i
from __future__ import print_function
import numpy as np
import cv2
from imutils.video import WebcamVideoStream
from imutils.video import FPS
import argparse
import imutils
import cv2
faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
#faceCascade = cv2.CascadeClassifier('haarcascade_profileface.xml')
fps = FPS().start()
cap = cv2.VideoCapture(0)
cap.set(3,640) # set Width
cap.set(4,480) # set Height
while True:
ret, img = cap.read()
#img = cv2.flip(img, -1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.2,
minNeighbors=5,
minSize=(20, 20)
)
for (x,y,w,h) in faces:
cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
cv2.imshow('video',img)
fps.update()
k = cv2.waitKey(30) & 0xff
if k == 27: # press 'ESC' to quit
break
fps.stop()
print("[INFO] approx. FPS: {:.2f}".format(fps.fps()))
cap.release()
cv2.destroyAllWindows()
在deepface中运行人脸检测非常简单。detectFace函数分别在背景中应用人脸检测和对齐
#!pip install deepface
from deepface import DeepFace
backends = ['opencv', 'ssd', 'dlib', 'mtcnn']
detected_face = DeepFace.detectFace("img.jpg", detector_backend = backends[0])
您也可以手动运行检测和对齐。如果对齐不在您的范围内,您可以通过这种方式跳过此步骤
from deepface.commons import functions
img = functions.load_image("img.jpg")
backends = ['opencv', 'ssd', 'dlib', 'mtcnn']
detected_face = functions.detect_face(img = img, detector_backend = backends[3])
plt.imshow(detected_face)
aligned_face = functions.align_face(img = img, detector_backend = backends[3])
plt.imshow(aligned_face)
processed_img = functions.detect_face(img = aligned_face, detector_backend = backends[3])
plt.imshow(processed_img)