基于OpenCV+MFC的视频读取与对象跟踪平台

引言

  好久没写关于视觉的文章了,读研那会儿做了很多的小程序一直存在硬盘都吃灰了,这次我得把它们二次利用起来,拿出来晾凉,不然就有些浪费了,哈哈哈哈。
  下面这个是本人读研期间做的一个小平台,当时还用它水了篇小软著,想着给自己评奖的时候多加点分来着,但最后也是没用到。
  虽然现在看着挺简单的,但当时为了实现它还是耗费了我不少心思的,尤其是KCF多对象跟踪,直接通过界面框选某个物体来进行对象跟踪的这个操作,当时卡了好几天才弄出来,哈哈这个挺好玩的。
  文章最后会附带资源获取链接——内含源码、使用视频等。

一、软件功能简介

视频读取与对象跟踪平台:
  采用VS开发环境,C++编程语言,MFC框架搭建界面,调用opencv算法库开发。具有读取、暂停、恢复、保存、录制视频的功能,并通过多种对象跟踪算法对视频中的指定物体进行跟踪。所包含的对象跟踪算法有BSM跟踪,颜色跟踪,光流跟踪,KCF多对象跟踪等算法。

软件运行结果如下所示:
在这里插入图片描述

二、各个功能介绍

1、视频操作模块功能介绍

1.1打开视频

  软件打开运行后,单击打开视频按钮,如下,会弹出对话框,可用来选择要打开的视频。选择的视频格式有avi、MP4等常用的视频格式。
在这里插入图片描述

  如上选择bike.avi视频后,点击对话框的打开按钮,视频会显示在软件主界面的显示窗口上,如下所示
在这里插入图片描述

  若打开的视频正处于播放阶段,不进行视频关闭则无法打开下一个视频,即在视频播放时再次点击打开视频按钮,则会弹出如下警告
在这里插入图片描述

1.2打开摄像头

  点击打开摄像头时会打开电脑所连接的外置摄像头,当无外部链接的摄像头时会打开电脑本身自带的摄像头,电脑没有链接摄像头则报错。
  打开摄像头时,主界面显示窗口如下:
在这里插入图片描述

1.3开始录制

  当打开摄像头时,点击此开始录制按钮可以进行视频录制操作,点击开始录制按钮会弹出如下对话框,此处需要选择要录制的视频的保存路径,当录制完成时,录制好的视频会报保存在此路径下:
在这里插入图片描述

当点击下方的结束录制按钮时,在当前路径下可以看到保存的视频
在这里插入图片描述

若未打开摄像头,直接点击开始录制按钮,会弹出警告,如下
在这里插入图片描述

1.4结束录制

点击结束,若未开始录制按钮,直接打开此结束按钮,会弹出警示框如下
在这里插入图片描述

1.5暂停

  当前若有视频运行,点击暂停按钮时,在播放中的视频或者正在录制的摄像头都会停止播放或录制操作。
  若未读取视频或打开摄像头,直接打开暂停按钮,则会弹出警告如下
在这里插入图片描述

1.6恢复

  当前由视频运行或者摄像头开启时,并且已经进行了暂停按钮的点击,选择恢复按钮可以恢复被暂停的视频播放或摄像录制操作。
  若未读取视频或打开摄像头,直接打开恢复按钮,则会弹出警告如下
在这里插入图片描述

1.7关闭

  若打开的视频正处于播放阶段,或者摄像头处于录制阶段,不进行关闭则无法打开下一个视频或摄像头,只有关闭当前视频或摄像头才可以打开下一个。
  若当前未有视频播放或者摄像录制,直接点击关闭按钮,会弹出如下警示框
在这里插入图片描述

1.8还原

  当打开的视频播放完成或者关闭时,点击此还原按钮会重新打开上一个视频进行播放。

2、对象跟踪模块功能介绍

2.1 BSM跟踪

  BSM又称背景消去建模法, 消除背景建模就是找出视频中移动的区域,只能对运动的物体进行跟踪,跟踪效果如下
在这里插入图片描述

上方左侧为原始视频图像,当点击BSM跟踪按钮后,显示效果如右侧所示。

2.2 颜色跟踪

  颜色跟踪,可以根据某个物体的特定的颜色进行跟踪,此处内置的是跟踪绿色,若是其他颜色物体跟踪可以更改内置颜色像素值来进行跟踪,如下所示

在这里插入图片描述

2.3 光流跟踪

  光流法是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的一种方法。在此处使用光流法跟踪并将跟踪的角点连续画出,效果如下
在这里插入图片描述

2.4 KCF多对象跟踪

当打开某个视频后,点击KCF多对象跟踪按钮,会弹出对象选择框如下
在这里插入图片描述

当我们使用鼠标点击拉伸时,可以框处我们想要的跟踪的某个物体,

在这里插入图片描述

  然后点击enter键,再点击esc键,视频就可以继续运行,并且跟踪所选择的对象了,如下:

在这里插入图片描述

  当然此KCF多对象跟踪可以不只跟踪某个对象,还可以跟踪多个对象,选择多个对象框住跟踪,如下:

在这里插入图片描述

资源链接

链接:https://download.csdn.net/download/qq_44870829/89618984
资源内容包含如下:
在这里插入图片描述

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于OpenCVMFC的读图程序结合了图像处理和图形界面设计的功能。OpenCV是一个开源的计算机视觉库,提供了各种图像处理和计算机视觉算法,而MFC是Microsoft Foundation Class的缩写,是一种用于Windows平台C++图形用户界面库。 这个读图程序可以加载、显示和处理各种类型的图像文件。使用OpenCV库的函数,我们可以读取和解码各种图像格式,如JPEG、PNG和BMP。通过MFC库提供的图形界面组件,我们可以创建一个窗口来显示图像,并提供交互操作。 程序首先通过OpenCV的函数读取图像文件。然后,使用MFC的窗口类创建一个窗口,并设置窗口的大小和位置。接下来,在窗口中创建一个图像显示区域,并将读取的图像显示在该区域内。同时,可以在窗口中添加一些控件,如按钮和滑动条,以实现一些图像处理的功能,如调整亮度、对比度和图像滤波等。 为了实现这个功能,我们可以使用OpenCV提供的图像处理函数,如cv::imshow()来显示图像,cv::resize()来调整图像大小,cv::cvtColor()来转换图像的色彩空间等。同时,可以使用MFC提供的窗口类,如CWnd和CDC来创建窗口和图像显示区域,并使用CButton和CSliderCtrl等控件类来添加交互控件。 通过结合OpenCVMFC,我们可以实现一个功能强大的读图程序,能够加载、显示和处理各种类型的图像文件,并提供用户友好的图形界面,方便用户进行图像处理操作。这种基于OpenCVMFC的读图程序不仅可以满足日常图像处理的需求,还可以作为学习和研究计算机视觉和图像处理的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾名招财

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值