开源 python 应用 开发(九)目标跟踪

 最近有个项目需要做视觉自动化处理的工具,最后选用的软件为python,刚好这个机会进行系统学习。短时间学习,需要快速开发,所以记录要点步骤,防止忘记。

 链接:

开源 python 应用 开发(一)python、pip、pyAutogui、python opencv安装-优快云博客

开源 python 应用 开发(二)基于pyautogui、open cv 视觉识别的工具自动化-优快云博客

开源 python 应用 开发(三)python语法介绍-优快云博客

开源 python 应用 开发(四)python文件和系统综合应用-优快云博客

开源 python 应用 开发(五)python opencv之目标检测-优快云博客

开源 python 应用 开发(六)网络爬虫-优快云博客

开源 python 应用 开发(七)数据可视化-优快云博客

开源 python 应用 开发(八)图片比对-优快云博客

 推荐链接:

开源 Arkts 鸿蒙应用 开发(一)工程文件分析-优快云博客

开源 Arkts 鸿蒙应用 开发(二)封装库.har制作和应用-优快云博客

开源 Arkts 鸿蒙应用 开发(三)Arkts的介绍-优快云博客

开源 Arkts 鸿蒙应用 开发(四)布局和常用控件-优快云博客

开源 Arkts 鸿蒙应用 开发(五)控件组成和复杂控件-优快云博客

 推荐链接:

开源 java android app 开发(一)开发环境的搭建-优快云博客

开源 java android app 开发(二)工程文件结构-优快云博客

开源 java android app 开发(三)GUI界面布局和常用组件-优快云博客

开源 java android app 开发(四)GUI界面重要组件-优快云博客

开源 java android app 开发(五)文件和数据库存储-优快云博客

开源 java android app 开发(六)多媒体使用-优快云博客

开源 java android app 开发(七)通讯之Tcp和Http-优快云博客

开源 java android app 开发(八)通讯之Mqtt和Ble-优快云博客

开源 java android app 开发(九)后台之线程和服务-优快云博客

开源 java android app 开发(十)广播机制-优快云博客

开源 java android app 开发(十一)调试、发布-优快云博客

开源 java android app 开发(十二)封库.aar-优快云博客

推荐链接:

开源C# .net mvc 开发(一)WEB搭建_c#部署web程序-优快云博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-优快云博客

开源 C# .net mvc 开发(三)WEB内外网访问(VS发布、IIS配置网站、花生壳外网穿刺访问)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-优快云博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示_c#工程结构-优快云博客

开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-优快云博客

本章节内容如下:一个简单的人脸跟踪系统,使用OpenCV的跟踪器来实时跟踪用户选择的区域(通常是面部),效果中用盒子来代替,跟踪效果也是完全没有问题。

1.安装所需库

2.核心代码分析

3.所有代码

4.最终效果

一、使用CMD安装opencv-python的库

pip install opencv-python -i https://mirrors.aliyun.com/pypi/simple/

二、核心源码分析

2.1  创建了一个CSRT跟踪器、打开默认摄像头

  相关代码

tracker = cv2.TrackerCSRT_create() 
cap = cv2.VideoCapture(0)

2.2  读取第一帧,用户手动选择跟踪区域,初始化跟踪器

相关代码

ret, frame = cap.read()
bbox = cv2.selectROI("Select Face", frame, False)
tracker.init(frame, bbox)

2.3   循环操作

不断读取视频帧,使用tracker.update(frame)更新跟踪器并获取新的边界框,如果跟踪成功(success=True),在帧上绘制绿色矩形框标记被跟踪对象,显示结果帧。

相关代码

while True:
    ret, frame = cap.read()
    if not ret:
        break

    success, bbox = tracker.update(frame)
    if success:
        x, y, w, h = [int(v) for v in bbox]
        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

    cv2.imshow('Face Tracking (CSRT)', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

三、所有代码

import cv2

tracker = cv2.TrackerCSRT_create()  # 或 cv2.TrackerKCF_create()
cap = cv2.VideoCapture(0)

# 先检测人脸,初始化跟踪器
ret, frame = cap.read()
bbox = cv2.selectROI("Select Face", frame, False)
tracker.init(frame, bbox)

while True:
    ret, frame = cap.read()
    if not ret:
        break

    success, bbox = tracker.update(frame)
    if success:
        x, y, w, h = [int(v) for v in bbox]
        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

    cv2.imshow('Face Tracking (CSRT)', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

四、最终效果

4.1  启动后,使用鼠标,框选物体

4.2  选中后,开始跟踪,物体始终被绿色框选中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值