Слияние кода завершено, страница обновится автоматически
# 判别相关滤波器 (discriminative correlation filter, DCF) 的视觉跟踪器
# face tracking, does not support changing the tracking object
import cv2
import dlib
# basic information
def draw_text_info():
# 绘制文本的位置
menu_pos_1 = (10, 20)
menu_pos_2 = (10, 40)
# 绘制菜单信息
cv2.putText(frame, "using '1' to re-initialize tracking", menu_pos_1, cv2.FONT_HERSHEY_SIMPLEX, 0.5,
(255, 255, 255), 1)
if tracking_face:
cv2.putText(frame, "tracking the face", menu_pos_2, cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1)
else:
cv2.putText(frame, "detecting a face to initialize tracking...", menu_pos_2, cv2.FONT_HERSHEY_SIMPLEX, 0.5,
(0, 0, 255), 1)
# 创建视频捕获对象
# 连接本地我的手机,同一个局域网
# video="http://admin:224114@192.168.1.9:8081/video"
# capture = cv2.VideoCapture(video)
# 打开本地摄像头
capture = cv2.VideoCapture(0)
# load face detector
detector = dlib.get_frontal_face_detector()
# initialize the tracker
tracker = dlib.correlation_tracker()
# 当前是否在追踪人脸 whether the face is currently being tracked
tracking_face = False
while True:
# capture the frames
ret, frame = capture.read()
# drawing basic information
draw_text_info()
if tracking_face is False:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 尝试检测人脸以初始化跟踪器
rects = detector(gray, 1)
# 通过判断是否检测到人脸来决定是否启动追踪
if len(rects) > 0:
# start tracking
print("face number:", len(rects))
tracker.start_track(frame, rects[0])
tracking_face = True
if tracking_face is True:
# 更新跟踪器并打印测量跟踪器的置信度
print(tracker.update(frame))
# 获取被跟踪对象的位置
pos = tracker.get_position()
# 绘制被跟踪对象的位置
cv2.rectangle(frame, (int(pos.left()), int(pos.top())), (int(pos.right()), int(pos.bottom())), (0, 255, 0), 3)
# 捕获键盘事件
key = 0xFF & cv2.waitKey(1)
# 按 1 初始化追踪器
if key == ord('1'):
tracking_face = False
# 按 q 退出
if key == ord('q'):
break
# 显示结果
cv2.imshow("face tracking using dlib frontal face detector and correlation filter for tracking",
cv2.resize(frame, (1000, 600)))
# 释放所有资源
capture.release()
cv2.destroyAllWindows()
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )