利用OpenCV和MFC对话框建设一个有滑动条控制的播放器--转
(一)问题的提出:
OpenCV有一个很简单的播放视频文件并加载滑动条的程序,但是如何用MFC对话框来创建一个有滑动条控制的播放器呢,网络上四处搜索都没有代码可以参考,下的都是些骗子链接文件,很过分,一点参考价值都没有,怎么办?
(二)解决的思路:
1.自己进行研究,不指望网络有现成的馅饼,因为那里多了去的陷阱,很可恶。
2.要解决的关键问题是slider滑动条控件如何与视频播放实时结合在一起:
①主窗体的OnHScroll()响应函数负责响应slider滑动条的变化,这样就轻松搞定slider控件与拖动滑动条动作与视频播放的联动。
②新建虚拟的slider实例和slider滑动位置的全局变量,通过数据交换函数予以关系绑定
③通过OpenCV的函数cvSetCaptureProperty()和slider滑动位置全局变量来确定指向视频的哪个帧位置,并进行加载显示到Picture控件中
(三)问题的解决:
1.编写完了程序,在程序中添加了如下注释代码:
//////////////////////////////////////////////////////////////////////
// VideoPlayer
// Author: Weilin Huang (19894644@qq.com)
// Last modification: May 16, 2012
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// 使用说明:
// 1. 安装VS2008
// 2. 安装OpenCV2.0
// 3. 安装cmake2.8.6
// 4. 通过cmake生成可以被VC++ 2008调用的OpenCV动态库
// 5. 配置Windows环境变量Path,将OpenCV2.0安装后的bin文件夹目录添加入用户变量
// 使得Path=.../bin
// (...是OpenCV2.0安装后的program files下的目录全路径)
// 6. 打开VC++ 2008,菜单中的工具→选项→项目和解决方案→VC++目录
// 在显示以下内容的目录中,
// 先选中可执行文件,加入目录...\bin
// 再选中包含文件,加入目录...\include\opencv
// 再选中库文件,加入目录...\lib
// (...是OpenCV2.0安装后的program files下的目录全路径)
// 7. 新建MFC对话框项目VideoPlayer
// 然后再在它的属性里去掉更换Unicode的字符集为多字节集
// 配置链接器的输入依赖项cxcore200.lib cv200.lib highgui200.lib
// 8. 或者是不进行7的操作,直接将本程序对新建的VideoPlayer对话框项目进行覆盖
// 然后再对其中的VideoPlayer对话框项目配置属性进行修改
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// 功能说明:
// 1. slider控件、Picture控件、打开按钮、播放按钮、暂停按钮、停止按钮
// 2. 实现视频的加载、播放、暂停、停止,以及通过滑动条进行视频播放进度的控制
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////
// 存在的问题:
// 1. 有些视频并不是有多少帧就多少帧结尾
// 比如用屏幕录像机录像的avi,比如录了帧,它有时会丢帧,
// 丢帧的那个位置,无法用IplImage的图像空间来加载视图,那程序调试就会报错
// 2. 基本的功能都实现了,就缺验证它的执行效率,还有是否会存在内存泄漏
//////////////////////////////////////////////////////////////////////
2.程序打包成VideoPlayer.rar(压缩包内除了完整程序还包括了文件cmake-2.8.6-win32-x86.exe和OpenCV-2.0.0a-win32.exe),放置到如下位置:
http://download.csdn.net/detail/huanghanyu11/4311846
解压缩密码为huangweilin
from:http://www.cnblogs.com/huangweilin/archive/2012/05/18/2507764.html
利用OpenCV和MFC对话框建设一个有滑动条控制的播放器--转的更多相关文章
- 一个简单的基于 DirectShow 的播放器 2(对话框类)
上篇文章分析了一个封装DirectShow各种接口的封装类(CDXGraph):一个简单的基于 DirectShow 的播放器 1(封装类) 本文继续上篇文章,分析一下调用这个封装类(CDXGrap ...
- 一个简单的基于 DirectShow 的播放器 1(封装类)
DirectShow最主要的功能就是播放视频,在这里介绍一个简单的基于DirectShow的播放器的例子,是用MFC做的,今后有机会可以基于该播放器开发更复杂的播放器软件. 注:该例子取自于<D ...
- 用<audio>标签打造一个属于自己的HTML5音乐播放器
上一章节,我们刚刚讲了<video>标签,今晚,我们讲的是<audio>标签,这两个东东除了表示的内容不一样以外,其他的特性相似的地方真的太多了,属性和用法几乎一样,也就说,如 ...
- 一个功能齐全的IOS音乐播放器应用源码
该源码是在ios教程网拿过来的,一个不错的IOS音乐播放器应用源码,这个是我当时进公司时 我用了一晚上写的 图片都是在别的地方扒的,主要是歌词同步,及上一曲,下一曲,功能齐全了 ,大家可以学习一下吧 ...
- 一个使用 Web Components 的音乐播放器: MelodyPlayer
先上效果预览: Web Components 首先,什么是 Web Components ? MDN 给出的定义是: Web Components 是一套不同的技术,允许您创建可重用的定制元素(它们的 ...
- 如何利用阿里视频云开源组件,快速自定义你的H5播放器?
摘要: Aliplayer希望提供一种方便.简单.灵活的机制,让客户能够扩展播放器的功能,并且Aliplayer提供一些组件的基本实现,用户可以基于这些开源的组件实现个性化功能,比如自定义UI和自己A ...
- 一个简单有趣的Python音乐播放器
(赠新手,老鸟绕行0.0) Python版本:3.5.2 源码如下: __Author__ = "Lance#" # -*- coding = utf-8 -*- #导入相应模块 ...
- 自己实现一个简单的网络音乐mp3播放器
大繁至简,把思路搞清楚才是最重要的,如何去做依托于使用什么来实现这项功能 列出我使用的基本类 NSURLSessionDataTask 数据获取类 NSFileHandle 数据缓存和数据读取类 Au ...
- OpenCV 通过 MFC 的 Picture Control 控件操作图像
假设希望对显示在MFC Picture Control 控件里的图像进行操作,比方画线画点之类的,能够利用 OpenCV 结合 MFC 本身的鼠标响应函数来实现. 怎样将图像显示到 Picture C ...
随机推荐
- PHPStrom上传文件报502错误原因
PhpStorm是一个轻量级且便捷的PHP IDE,其自身拥有apache类似的编译器,能够在无Apache的情况下运行,很适合初学PHPStrom的朋友. 但是我发现了一个问题,那就是用PHPStr ...
- SQL Server MYSQL 对外键建立索引的必要性
背景: 大家知道在定义外键时,都会给出on delete ..... on update .....: 这里指定的就是当主表的列发生变化时,从表的列要用怎么样的变化去迎合.对从表中的外键,建立索引 ...
- block,inline,inline-block
block元素的特点是: 总是在新行上开始: 高度,行高以及顶和底边距都可控制: 宽度缺省是它的容器的100%,除非设定一个宽度 <div>, <p>, <h1>, ...
- android模块
网络模块 1.URL --------openStream() return InputStream --------openConnection() return URLConnection 2.U ...
- UINavigationController技巧<一>——修改返回按钮的标题
UINavigationController 一般push到另一界面后,返回按钮标题便是上一页面的title,但是对于push的第一页或者是上一页面没有title的,返回按钮标题便是默认back,如图 ...
- mongodb 2.6.6 在window10下的安装
首先感谢波仔的知道,其次感叹下WIN10的牛叉,兼容性还不错. 首先,下载mongodb 2.6.6 安装包,可惜,官网太慢,还得注册.不过还好,我是个好人:http://pan.baidu.com/ ...
- 使用trim方法检测用户输入
首先需要封装trim方法,可以去除字符串两端空格的方法 function trim(str) { return str.replace(/^\s+|\s+$/g, ""); } 获 ...
- ASP.NET动态引用WebService接口
尊重原著作:本文转载自http://www.mhzg.net/a/20124/20124912180589.html 有经验的朋友都知道,通常我们在引用webservice的时候,是在项目中就添加了引 ...
- ABCpdf.NET中Rect,Bottom,Height的关系
因为项目需要新功能,要在一个图片的上下加上固定高度的白边如下图.项目中一直使用ABCpdf.NET处理图片,但我一直没有做这方面的功能,所以找来API参考做. 这个简单需求做的过程中出现了一些曲折,主 ...
- Description:一根高筋拉面,中间切一刀,可以得到2根面条。如果先对折1次,中间切一刀,可以得到3根面条。如果连续对折2次,中间切一刀,可以得到5根面条。Input:你的程序需要解决的问题是,输入连续对折的次数。NOutput输出中间切一刀,可以得到多少根面条。
#include<iostream> using namespace std ; int main() { int n ; while(cin >> n) { << ...