下面这段代码的是:打开视频,弹出通用对话框,选择要播放的视频文件

CString filter;filter = "所有文件(*.avi,*.3gp,*.mp4,*.rm,*rmvb,*flash) | *.avi;*.3gp;*.mp4;*.rm;*.rmvb;*flash";//视频文件类型。CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, filter, NULL);if (dlg.DoModal() == IDOK)  //用户单击OK按钮中止对话框的返回值{CString FileName = dlg.GetPathName();   //获取文件路径名 如D:\\1.jpgstring filename = (CStringA)FileName;   //把CString转换成filename。CImage myImage;                         // 它能从外部磁盘中调入一个JPEG、GIF、BMP和PNG格式的图像文件加以显示     Mat myImagine;                          // Mat存帧。VideoCapture capture;     // capture对象。capture.open(filename);                 //打开视频文件theApp.countFrame = capture.get(CV_CAP_PROP_FRAME_COUNT);CRect rect;                             // 矩形,窗口的大小。GetDlgItem(IDC_STATIC_PIC)->GetClientRect(&rect);}

每个函数讲解

CFileDialog类

explicit CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt = NULL,LPCTSTR lpszFileName = NULL,DWORD dwFlags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,LPCTSTR lpszFilter = NULL,CWnd* pParentWnd = NULL,DWORD dwSize = 0,BOOL bVistaStyle = TRUE
);

参数说明:
**bOpenFileDialog:**指定要创建的文件对话框的类型。设为TRUE将创建打开文件对话框,否则将创建保存文件对话框。
**lpszDefExt:**默认的文件扩展名。如果用户在文件名编辑框中没有输入扩展名,则由lpszDefExt指定的扩展名将被自动添加到文件名后。默认为NULL。
**lpszFileName:**文件名编辑框中显示的初始文件名。如果为NULL,则不显示初始文件名。

**dwFlags:**文件对话框的属性,可以是一个值也可以是多个值的组合。关于属性值的定义,可以在MSDN中查找结构体OPENFILENAME,元素Flags的说明中包含了所有属性值。默认为OFN_HIDEREADONLY和OFN_OVERWRITEPROMPT的组合,OFN_HIDEREADONLY表示隐藏文件对话框上的“Read Only”复选框OFN_OVERWRITEPROMPT表示在保存文件对话框中如果你选择的文件存在了就弹出一个消息对话框,要求确定是否要覆盖此文件。

lpszFilter:文件过滤器,它是由若干字符串对组成的一个字符串序列。如果指定了文件过滤器,则文件对话框中只有符合过滤条件的文件显示在文件列表中待选择。给大家看看VS2010 MSDN中给出的一个例子:
static TCHAR BASED_CODE szFilter[] = _T(“Chart Files (.xlc)|.xlc|Worksheet Files (.xls)|.xls|Data Files (.xlc;.xls)|.xlc; .xls|All Files (.)|.||”);
这样设置过滤器以后,文件对话框的扩展名组合框中将有四个选项:Chart Files (.xlc)、Worksheet Files (.xls)、Data Files(.xlc;.xls)和All Files (.),大家可以看到每种文件的扩展名规定都是一个字符串对,例如Chart Files的过滤字符串是Chart Files(.xlc)和.xlc成对出现的。

**pParentWnd:**文件对话框的父窗口的指针。

dwSize:OPENFILENAME结构体的大小。不同的操作系统对应不同的dwSize值。MFC通过此参数决定文件对话框的适当类型(例如,创建Windows 2000文件对话框还是XP文件对话框)。默认为0,表示MFC将根据程序运行的操作系统版本来决定使用哪种文件对话框。
**bVistaStyle:**指定文件对话框的风格,设为TRUE则使用Vista风格的文件对话框,否则使用旧版本的文件对话框。此参数仅在Windows Vista中编译时适用。

CDialog::DoModal()的返回值

#define IDOK 用户单击OK按钮中止对话框的返回值
#define IDCANCEL 单击CANCEL按钮中止对话框的返回值
#define IDABORT 对话框异常中止时返回值
#define IDRETRY 用户单击重试按钮中止对话框的返回值
#define IDIGNORE 用户单击忽略按钮中止对话框的返回值
#define IDYES
#define IDNO
#if(WINVER >= 0x0400)
#define IDCLOSE 用户单击关闭(右上角红X)按钮中止对话框的返回值
#define IDHELP 用户单击帮助按钮中止对话框的返回值
CImage类介绍

CImage是MFC和ATL共享的新类,它能从外部磁盘中调入一个JPEG、GIF、BMP和PNG格式的图像文件加以显示而且这些文件格式可以相互转换。
CImage是VC.NET中定义的一种MFC/ATL共享类,也是ATL的一种工具类,它提供增强型的(DDB和DIB)位图支持,可以装入、显示、转换和保存多种格式的图像文件,包括BMP、GIF、JPG、PNG、TIF等。CImage是一个独立的类,没有基类。(CImage类是基于GDI+的,从VC.NET起引进,VC 6.0中没有。)
ATL(Active Template Library,活动模板库)是一套基于模板的 C++ 类,用以简化小而快的 COM 对象的编写。
为了在MFC程序中使用CImage类,必须包含ATL的图像头文件atlimage.h:
VideoCapture说明:
构造函数参数:
filename – 打开的视频文件名。
device – 打开的视频捕获设备id ,如果只有一个摄像头可以填0,表示打开默认的摄像头。
这个类函数其他的API
C++: bool VideoCapture::open(const string& filename) #先实例化再初始化:VideoCapture capture;capture.open(“dog.avi”);在实例化的同时进行初始化:VideoCapture(“dog.avi”);
C++: bool VideoCapture::open(int device) #device – 打开的视频捕获设备id ,如果只有一个摄像头可以填0,表示打开默认的摄像头。
C++: bool VideoCapture::isOpened()#功能:判断视频读取或者摄像头调用是否成功,成功则返回true。
C++: void VideoCapture::release() #关闭视频文件或摄像头。
C++: bool VideoCapture::grab() #功能:从视频文件或捕获设备中抓取下一个帧,假如调用成功返回true。
C++: bool VideoCapture::retrieve(Mat& image, int channel=0) #功能:解码并且返回刚刚抓取的视频帧,假如没有视频帧被捕获(相机没有连接或者视频文件中没有更多的帧)将返回false。
C++: bool VideoCapture::read(Mat& image) #功能:该函数结合VideoCapture::grab()和VideoCapture::retrieve()其中之一被调用,用于捕获、解码和返回下一个视频帧这是一个最方便的函数
对于读取视频文件或者捕获数据从解码和返回刚刚捕获的帧,假如没有视频帧被捕获(相机没有连接或者视频文件中没有更多的帧)将返回false。
C++: double VideoCapture::get(int propId) #功能:一个视频有很多属性,比如:帧率、总帧数、尺寸、格式等,VideoCapture的get方法可以获取这些属性。Note:
如果查询的视频属性是VideoCapture类不支持的,将会返回0。见附录1。//get()是获取
C++: bool VideoCapture::set(int propertyId, double value) #功能:设置VideoCapture类的属性,设置成功返回ture,失败返回false。参数:第一个是属性ID,第二个是该属性要设置的值。//set()是设置
附录1:
VideoCapture::get() / set() (设置是永久改变的)参数
常用:
CV_CAP_PROP_FRAME_WIDTH 视频流帧的宽度/一帧图像的宽度
CV_CAP_PROP_FRAME_HEIGHT 视频流帧的高./一帧图像的高度
CV_CAP_PROP_FPS 帧率.
CV_CAP_PROP_FRAME_COUNT 视频文件的帧数.
CV_CAP_PROP_BRIGHTNESS 图像亮度 (只对摄像头).
CV_CAP_PROP_CONTRAST 图像对比度 (只对摄像头).
CV_CAP_PROP_SATURATION 图像饱和度 (只对摄像头).
CV_CAP_PROP_HUE 色调 (只对摄像头).
CV_CAP_PROP_GAIN 增益(只对摄像头).
CV_CAP_PROP_EXPOSURE 曝光(只对摄像头).

C++_MFC读视频文件相关推荐

  1. python读视频文件_python读取和保存视频文件

    如何用python实现视频关键帧提取并保存为图片?也许你会觉得对小编多做一点事你会觉得你很爽,可是在小编看来这是不屑的 import cv2vc = cv2.VideoCapture('Test.av ...

  2. OpenCV中文网站例程——读视频文件和运动物体检测

    来自于仕琪的讲稿<使用OpenCV进行图像处理>中的例程 程序如下:   #include <stdio.h>  #include <cv.h> #include ...

  3. 读视频文件和运动物体检测

    来自于仕琪的讲稿<使用OpenCV进行图像处理>中的例程 简要说明:本程序 尝试打开本电脑上的摄像头作为视频输入设备,或者将命令行的输入参数作为文件名来打开的视频文件.不管是哪一种方法,最 ...

  4. cv2读视频文件取帧图片

    希望通过cv2.VideoCapture类截取视频帧图片,期间只能截取视频的每帧图片,不能跳帧截取图片,原来是在读取视频帧的时候没有写入ret, frame = cv2.VideoCapture.re ...

  5. 实践:基于腾讯云播放器SDK,带您体验播放多场景下的 COS 视频文件

    一. 实践步骤 1. 准备您的 腾讯云COS 视频文件链接,您需要: 1.1 创建一个存储桶: 1.2 上传对象: 1.3 在对象信息详情里复制对象地址: 注意: 目前腾讯云有COS特惠活动,新人1元 ...

  6. 如何基于OSS和MPS,快速搭建音视频文件上传服务?

    背景 本文主要介绍如何基于OSS服务和MPS的上传SDK,快速搭建一个音视频文件上传服务. 优势 使用MPS的上传SDK上传音视频文件,具有以下优势: 增加文件列表管理功能. 增加STS Token ...

  7. H264 视频文件 帧格式 传输封装等 杂碎

    H264 视频文件 帧格式 传输封装等 杂碎 rfc3984 Standards Track [Page 2] RFC 3984 RTP Payload Format for H.264 Video ...

  8. 如何基于OSS和MTS,快速搭建音视频文件上传服务?

    摘要: 背景 本文主要介绍如何基于OSS服务和MTS的上传SDK,快速搭建一个音视频文件上传服务. 优势 使用MTS的上传SDK上传音视频文件,具有以下优势: 增加文件列表管理功能. 增加STS To ...

  9. m3u8解析_浅谈m3u8格式视频文件采集

    在对某在线视频网站抓包分析时,发现该站点采用m3u8格式进行视频文件传输. 通过m3u8的response可以看到,m3u8格式文件由很多段ts文件组成.那么什么是m3u8,什么是ts呢? M3U8是 ...

最新文章

  1. 容器技术 - docker
  2. python maketrans方法
  3. endnote参考文献排版_Endnote参考文献管理软件文献插入排版
  4. jquery.dataTable.js 绘制表格使用详解
  5. 还原出厂设置 擦除frp_如何备份,擦除和还原Apple Watch
  6. 清华大学开始招收高二学生,数学天赋是最重要的入围条件
  7. MongoDB高级——安全
  8. 队列,管道,manager模块
  9. 让谷歌、百度最快最多地收录您的网站
  10. uniapp debug能打开release不行_盘点在 Release 下由循环体优化所产生的不确定性 Bug...
  11. 初探队与广度优先搜索
  12. XP下 无法定位程序输入点WSAPoll于动态链接库ws2_32.dll 的解决办法
  13. siri中文语音助理_针对“语音助手”类产品,浅谈对话式交互设计
  14. Python: 第三方模块(modules)的安装位置 (2014-08-24 23:19:18)转载▼ 标签: site-packages dist-packages 默认安装目录 分类: Pyth
  15. 信息系统的无单点故障设计
  16. 使用开源激光SLAM方案LIO-SAM运行KITTI数据集,如有用,请评论雷锋
  17. 春季活动策划案例合集(共25份)
  18. Matrix Theory(矩阵理论)
  19. 哈工大版理论力学和濮良贵版《机械设计》、张宇数学二等视频和试卷分享
  20. 用ChatGPT处理Excel。。真有你的!

热门文章

  1. HashMap的底层原理你真的知道?
  2. 虚拟机恢复初始化设置
  3. 如何进行小红书推广?小红书平台适合推广什么产品?
  4. 2019年1月22日 总结
  5. 链表(提高)-数据结构(二)
  6. java ee jpi是什么,“JPI”是“Java Plug In”的缩写,意思是“Java插件”
  7. vue组件通讯:父传子、子传父、事件发射详解
  8. 09|自研or借力(下):集成Gin替换已有核心
  9. js练习:筋斗云案例练习
  10. OFD格式文如何打开,可以转成PDF吗?