[毕业设计]机器学习的运动目标跟踪-opencv
创始人
2024-02-15 17:33:33

目录

前言

课题背景和意义

实现技术思路

第一步:创建单目标追踪器

第二步:读取视频的第一帧

第三步:在第一帧中定位物体

第四步:初始化多目标追踪器

实现效果图样例


前言


    📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

🚀对毕设有任何疑问都可以问学长哦!

本次分享的课题是

🎯机器学习的运动目标跟踪

课题背景和意义

目标跟踪指的是对视频中的移动目标进行定位的过程。

在如今AI行业有着很多应用场景,比如监控,辅助驾驶等。

对于如何实现视频的目标跟踪,也有着许多方法。

比如跟踪所有移动目标时,视频每帧之间的变化就显得很有用。

实现技术思路

第一步:创建单目标追踪器

一个多目标追踪器是由一系列简单的单目标追踪器组成的。一开始,我们先定义一个函数,用追踪器类型作为输入并创建一个追踪器对象。OpenCV 有八个不同的追踪器类型:BOOSTING, MTL, KCF, TLD, MEDIANFLOW, GOTURN, MOSSE, CSRT.

如果你想用 GOTURN 追踪器,请确保阅读这篇文章并下载caffe模型。在下面的代码中,给出追踪器类别的名字,我们返回追踪器对象。这个追踪器会用于多目标追踪器。

from __future__ import print_function
import sys
import cv2
from random import randinttrackerTypes = ['BOOSTING', 'MIL', 'KCF','TLD', 'MEDIANFLOW', 'GOTURN', 'MOSSE', 'CSRT']def createTrackerByName(trackerType):# Create a tracker based on tracker nameif trackerType == trackerTypes[0]:tracker = cv2.TrackerBoosting_create()elif trackerType == trackerTypes[1]: tracker = cv2.TrackerMIL_create()elif trackerType == trackerTypes[2]:tracker = cv2.TrackerKCF_create()elif trackerType == trackerTypes[3]:tracker = cv2.TrackerTLD_create()elif trackerType == trackerTypes[4]:tracker = cv2.TrackerMedianFlow_create()elif trackerType == trackerTypes[5]:tracker = cv2.TrackerGOTURN_create()elif trackerType == trackerTypes[6]:tracker = cv2.TrackerMOSSE_create()elif trackerType == trackerTypes[7]:tracker = cv2.TrackerCSRT_create()else:tracker = Noneprint('Incorrect tracker name')print('Available trackers are:')for t in trackerTypes:print(t)return tracker

第二步:读取视频的第一帧

一个多目标追踪器需要两个输入

1.视频的一帧

2.你想要追踪的所有目标的位置(边界框)

给定这些信息,追踪器会在多有子序列帧中追踪这些特定目标的位置。

在下面的代码中,我们先用 VidoeCapture 类加载视频,读取第一帧。这一帧将会用于之后的 MultiTracker 的初始化。

 # Create a video capture object to read videoscap = cv2.VideoCapture(videoPath)# Read first framesuccess, frame = cap.read()# quit if unable to read the video fileif not success:print('Failed to read video')sys.exit(1)

第三步:在第一帧中定位物体

OpenCV 提供了一个叫做 selectROI 的功能,它可以弹出一个 GUI 来选择边界框(也叫做感兴趣的区域(ROI))

while True:# draw bounding boxes over objects# selectROI's default behaviour is to draw box starting from the center# when fromCenter is set to false, you can draw box starting from top left cornerbbox = cv2.selectROI('MultiTracker', frame)bboxes.append(bbox)colors.append((randint(0, 255), randint(0, 255), randint(0, 255)))print("Press q to quit selecting boxes and start tracking")print("Press any other key to select next object")k = cv2.waitKey(0) & 0xFFif (k == 113):  # q is pressedbreakprint('Selected bounding boxes {}'.format(bboxes))

第四步:初始化多目标追踪器

初始化单目标追踪器,我们需要视频第一帧和用来标定我们想要追踪的目标位置的边界框。多目标追踪器将这些信息传递给它内部封装的单目标追踪器。

# Specify the tracker type
trackerType = "CSRT"   # Create MultiTracker object
multiTracker = cv2.MultiTracker_create()# Initialize MultiTracker 
for bbox in bboxes:multiTracker.add(createTrackerByName(trackerType), frame, bbox)

实现效果图样例

我是海浪学长,创作不易,欢迎点赞、关注、收藏、留言。

毕设帮助,疑难解答,欢迎打扰!

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...