python写一个人脸跟踪的算法代码,对10张图片进行人脸跟踪,以第一张图片中的人脸检测结果初始化,对后续9张图片中的人脸进行跟踪
时间: 2024-04-21 10:29:21 浏览: 173
Face-Detect:使用 OpenCV python 库从图像中裁剪出检测到的人脸
下面是一个简单的基于OpenCV的人脸跟踪算法代码,可以对10张图片进行人脸跟踪。该代码使用了Haar级联分类器进行人脸检测,使用了CSRT算法进行人脸跟踪。
```python
import cv2
# 加载Haar级联分类器
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)
# 初始化跟踪器
tracker = cv2.TrackerCSRT_create()
# 对第一个人脸进行跟踪
for (x, y, w, h) in faces1:
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:
# 使用CSRT算法进行跟踪
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()
```
阅读全文