OpenCV-Python實戰(16)——人臉追蹤詳解
import cv2
import dlib
def draw_text_info():
# 繪製文字的位置
menu_pos_1 = (10, 20)
menu_pos_2 = (10, 40)
menu_pos_3 = (10, 60)
# 選單項
info_1 = "Use left click of the mouse to select the object to track"
info_2 = "Use '1' to start tracking, '2' to reset tracking and 'q' to exit"
# 繪製選單資訊
cv2.putText(frame, "Use '1' to re-initialize tracking", menu_pos_1, cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255))
cv2.putText(frame, info_2, menu_pos_2, cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255))
if tracking_state:
cv2.putText(frame, "tracking", menu_pos_3, cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0))
else:
cv2.putText(frame, "not tracking", menu_pos_3, cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255))
# 用於儲存要跟蹤的物件座標的結構
points = []
def mouse_event_handler(event, x, y, flags, param):
# 對全域性變數的引用
global points
# 新增要跟蹤的物件的左上角座標
if event == cv2.EVENT_LBUTTONDOWN:
points = [(x, y)]
# 新增要跟蹤的物件的右下角座標:
elif event == cv2.EVENT_LBUTTONUP:
points.append((x, y))
# 建立影片捕獲物件
capture = cv2.VideoCapture(0)
# 視窗名
window_name = "Object tracking using dlib correlation filter algorithm"
# 建立視窗
cv2.namedWindow(window_name)
# 繫結滑鼠事件
cv2.setMouseCallback(window_name, mouse_event_handler)
# 初始化跟蹤器
tracker = dlib.correlation_tracker()
tracking_state = False
while True:
# 捕獲影片幀
ret, frame = capture.read()
# 繪製選單項
draw_text_info()
# 設定並繪製一個矩形,跟蹤矩形框內的物件
if len(points) == 2:
cv2.rectangle(frame, points[0], points[1], (0, 0, 255), 3)
dlib_rectangle = dlib.rectangle(points[0][0], points[0][1], points[1][0], points[1][1])
if tracking_face is True:
# 更新跟蹤器並列印測量跟蹤器的置信度
print(tracker.update(frame))
# 獲取被跟蹤物件的位置
pos = 外匯跟單gendan5.comtracker.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"):
if len(points) == 2:
# Start tracking:
tracker.start_track(frame, dlib_rectangle)
tracking_state = True
points = []
# 按下 2 鍵,停止跟蹤
if key == ord("2"):
points = []
tracking_state = False
# 按下 q 鍵,返回
if key == ord('q'):
break
# 展示結果影像
cv2.imshow(window_name, frame)
# 釋放資源
capture.release()
cv2.destroyAllWindows()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2841159/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- FaceDetector 人臉檢測追蹤demo
- python ubuntu dlib 人臉識別11-物體追蹤PythonUbuntu
- OpenCV-Python 人臉眼睛嘴識別OpenCVPython
- 詳解ElasticAPM實現微服務的鏈路追蹤(NET)AST微服務
- 一文詳解|Go 分散式鏈路追蹤實現原理Go分散式
- Jaeger Client Go 鏈路追蹤|入門詳解clientGo
- 微服務 Zipkin 鏈路追蹤原理(圖文詳解)微服務
- 基於虹軟人臉識別,實現RTMP直播推流追蹤視訊中所有人臉資訊(C#)C#
- (16)go-micro微服務jaeger鏈路追蹤Go微服務
- 基於開源模型搭建實時人臉識別系統(五):人臉跟蹤模型
- openCV實戰專案--人臉考勤OpenCV
- Python實戰——為人臉照片新增口罩Python
- 人臉識別檢測專案實戰
- Spring Cloud實戰系列(七) - 服務鏈路追蹤Spring Cloud SleuthSpringCloud
- 實時渲染路徑追蹤概述
- 企業使用專案追蹤有哪些挑戰?
- 日誌追蹤
- 程式碼追蹤
- 鏈路追蹤
- Map、Debug追蹤
- Debug追蹤eclipseEclipse
- games101 作業4及作業5 詳解光線追蹤框架GAM框架
- 美顏SDK人臉表情識別技術詳解
- 利用目標跟蹤來提高實時人臉識別處理速度
- 萬字詳解!搜狐智慧媒體基於 Zipkin 和 StarRocks 的微服務鏈路追蹤實踐微服務
- 實時光線追蹤技術:發展近況與未來挑戰
- 如何用實時資料追蹤來解決專案瓶頸?
- 機器學習實戰-SVM模型實現人臉識別機器學習模型
- OpenTelemetry分散式追蹤分散式
- skywalking鏈路追蹤
- 如何在 HDRP 中實現光線追蹤?
- Go - 實現專案內鏈路追蹤Go
- Go微服務框架go-kratos實戰05:分散式鏈路追蹤 OpenTelemetry 使用Go微服務框架分散式
- Flutter完整開發實戰詳解(十六、詳解自定義佈局實戰)Flutter
- PTAV:實時高精度目標追蹤框架 | ICCV 2017論文解讀框架
- 雲從科技資深演算法研究員:詳解跨鏡追蹤(ReID)技術實現及難點演算法
- 微服務追蹤SQL(支援Isto管控下的gorm查詢追蹤)微服務SQLGoORM
- Oracle執行語句跟蹤 使用sql trace實現語句追蹤OracleSQL