使用Python的opencv调用摄像头对视频人物进行追踪运动检测和人物识别的代码
时间: 2024-06-10 13:04:02 浏览: 247
你好!以下是使用Python的opencv调用摄像头对视频人物进行追踪运动检测和人物识别的代码:
```python
import cv2
# 加载视频文件
cap = cv2.VideoCapture("example.mp4")
# 定义追踪器
tracker = cv2.TrackerCSRT_create()
# 读取第一帧
ret, frame = cap.read()
# 选择需要追踪的区域
bbox = cv2.selectROI(frame, False)
# 初始化追踪器
tracker.init(frame, bbox)
# 定义人物识别的分类器
classifier = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
while True:
# 读取视频帧
ret, frame = cap.read()
if not ret:
break
# 更新追踪器
success, bbox = tracker.update(frame)
# 如果追踪成功
if success:
# 绘制追踪框和标记
(x, y, w, h) = [int(i) for i in bbox]
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.putText(frame, "Tracking", (75, 75), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 255, 0), 2)
# 人物识别
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
faces = classifier.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
# 绘制人脸框
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
else:
# 如果追踪失败,清除追踪框
cv2.putText(frame, "Lost", (75, 75), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
cv2.rectangle(frame, (0, 0), (0, 0), (0, 0, 0), -1)
# 显示视频帧
cv2.imshow("Frame", frame)
# 按下Q键退出
key = cv2.waitKey(1) & 0xFF
if key == ord("q"):
break
# 清理资源
cap.release()
cv2.destroyAllWindows()
```
希望能帮到你!
阅读全文