python写一个人脸跟踪的算法代码,对10张图片进行人脸跟踪,以第一张图片中的人脸检测结果初始化,对后续9张图片中的人脸进行跟踪
时间: 2024-04-21 11:30:00 浏览: 129
好的,我会为您提供一个基于OpenCV的Python人脸跟踪算法代码。在这个代码中,我们使用Haar Cascades分类器来检测人脸,然后使用OpenCV的correlation tracking算法来跟踪人脸。
以下是代码:
```python
import cv2
# 加载Haar Cascades分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 加载第一张图片并检测人脸
img1 = cv2.imread('image1.jpg')
gray1 = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
faces1 = face_cascade.detectMultiScale(gray1, 1.3, 5)
for (x, y, w, h) in faces1:
roi_gray1 = gray1[y:y+h, x:x+w]
roi_color1 = img1[y:y+h, x:x+w]
# 初始化跟踪器
tracker = cv2.TrackerCSRT_create()
bbox = (x, y, w, h)
ok = tracker.init(img1, bbox)
# 对后续9张图片进行人脸跟踪
for i in range(2, 11):
# 加载图片并进行人脸检测
img = cv2.imread('image{}.jpg'.format(i))
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
# 对每个检测到的人脸进行跟踪
for (x, y, w, h) in faces:
# 使用correlation tracking算法进行跟踪
bbox = (x, y, w, h)
ok, bbox = tracker.update(img)
if ok:
# 跟踪成功,绘制跟踪框
p1 = (int(bbox[0]), int(bbox[1]))
p2 = (int(bbox[0] + bbox[2]), int(bbox[1] + bbox[3]))
cv2.rectangle(img, p1, p2, (0, 255, 0), 2, 1)
else:
# 跟踪失败,重新初始化跟踪器
tracker = cv2.TrackerCSRT_create()
bbox = (x, y, w, h)
ok = tracker.init(img, bbox)
# 显示图片
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个代码中,我们首先加载Haar Cascades分类器并使用它来检测第一张图片中的人脸。然后,我们使用OpenCV的correlation tracking算法初始化跟踪器,并将其应用于后续9张图片中的人脸。如果跟踪成功,我们会绘制跟踪框,否则我们会重新初始化跟踪器。
注意:在运行这个代码之前,您需要首先下载Haar Cascades分类器并将其保存在与代码相同的文件夹中。您可以在这里下载Haar Cascades分类器:https://github.com/opencv/opencv/tree/master/data/haarcascades
阅读全文