如何使用Haar级联进行人脸检测并使用Kalman过滤器进行跟踪?

如何解决如何使用Haar级联进行人脸检测并使用Kalman过滤器进行跟踪?

我是计算机视觉的新手,我试图使用haar级联进行面部检测,并使用kalman滤波进行跟踪,我打算在raspBerry pi 3B上运行代码。因此,不能使用任何深度学习方法进行跟踪。 如何在我的代码中使用cv2.kalmanfilter()(https://docs.opencv.org/trunk/dd/d6a/classcv_1_1KalmanFilter.html)进行跟踪并为遍历路径画一条线? 如果有人可以指导我,那将是很大的帮助 我的代码是:

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),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()

解决方法

在深脸中运行人脸检测非常容易。 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','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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?