最近有个项目需要做视觉自动化处理的工具,最后选用的软件为python,刚好这个机会进行系统学习。短时间学习,需要快速开发,所以记录要点步骤,防止忘记。
链接:
开源 python 应用 开发(一)python、pip、pyAutogui、python opencv安装-优快云博客
开源 python 应用 开发(二)基于pyautogui、open cv 视觉识别的工具自动化-优快云博客
开源 python 应用 开发(三)python语法介绍-优快云博客
开源 python 应用 开发(四)python文件和系统综合应用-优快云博客
开源 python 应用 开发(五)python opencv之目标检测-优快云博客
推荐链接:
开源 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 选中后,开始跟踪,物体始终被绿色框选中。