opencv python行人检测跟踪
时间: 2023-07-12 10:55:12 浏览: 215
行人检测和跟踪是计算机视觉领域中的一个热门应用,OpenCV库提供了许多用于行人检测和跟踪的函数和工具。下面是一些实现行人检测和跟踪的基本步骤:
1. 加载视频或摄像头数据。
2. 使用Haar级联分类器或其他行人检测算法,例如HOG+SVM方法,对视频帧进行行人检测。
3. 对检测到的行人进行跟踪。可以使用跟踪算法,例如卡尔曼滤波器或Meanshift算法,来跟踪行人。
4. 在视频中显示跟踪结果,例如在视频帧上绘制矩形框或者标注文本。
下面是一个简单的Python代码示例,用于实现行人检测和跟踪:
```python
import cv2
# 加载Haar级联分类器
cascade_classifier = cv2.CascadeClassifier('haarcascade_fullbody.xml')
# 打开摄像头
capture = cv2.VideoCapture(0)
# 定义跟踪器
tracker = cv2.TrackerKCF_create()
# 初始化跟踪器
init_once = False
while True:
# 获取视频帧
ret, frame = capture.read()
# 对视频帧进行行人检测
if ret:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
rects = cascade_classifier.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=5, minSize=(30, 30))
# 对每个检测到的行人进行跟踪
for rect in rects:
# 初始化跟踪器
if not init_once:
tracker.init(frame, tuple(rect))
init_once = True
# 跟踪行人
success, box = tracker.update(frame)
if success:
# 在视频帧上绘制矩形框
pt1 = (int(box[0]), int(box[1]))
pt2 = (int(box[0] + box[2]), int(box[1] + box[3]))
cv2.rectangle(frame, pt1, pt2, (0, 255, 0), 2)
else:
init_once = False
# 在视频中显示跟踪结果
cv2.imshow('Tracking', frame)
# 退出程序
if cv2.waitKey(1) == 27:
break
# 释放资源
capture.release()
cv2.destroyAllWindows()
```
在这个示例中,我们使用了Haar级联分类器来检测行人,使用了KCF跟踪器来跟踪行人。当检测到行人时,我们使用tracker.init()函数来初始化跟踪器,然后使用tracker.update()函数来更新跟踪器状态并获取跟踪结果。最后,在视频帧上绘制矩形框来显示跟踪结果。
阅读全文