当前位置: 首页 > news >正文

C#使用EmguCV播放视频

目录

一、前言

1、简介 

2、测试工程代码下载链接

3、EmguCV 库文件下载链接

二、工程环境配置

1、EmguCV控件添加引用

(1)窗口控件添加

 (2)相关Dll文件添加添加引用

(3)工程运行基础文件夹添加

 (4)调试运行

2、界面设计

(1)整体布局

 (2)设置Image相关属性

 3、添加相应控件事件程序

(1)全局变量

(2)打开影片

(3)播放和暂停


一、前言

1、简介 

 EmguCV是C#版本的OpenCV,EmguCV播放视频主要是将视频解析成一帧帧图像画面。每秒钟显示相对应的帧数画面,即可达到视频播放的效果。本质上是很短的时间显示足够多的图像,因此播放过程中没有影片声音。使用该方式播放视频的优势是可以对视频进行精确播放控制

 播放控制效果

2、测试工程代码下载链接

https://download.csdn.net/download/panjinliang066333/88167836

3、EmguCV 库文件下载链接

https://download.csdn.net/download/panjinliang066333/85711171

二、工程环境配置

1、EmguCV控件添加引用

创建C# Winform工程

(1)窗口控件添加

工具箱中添加EmguCV选项卡,向EmguCV中添加EmguCV.UI控件

 向窗口中添加EmguCV->ImageBox控件,控件背景颜色设置为黑色

 (2)相关Dll文件添加添加引用

(3)工程运行基础文件夹添加

将库文件中的X86文件夹复制到程序工程的Debug或者Release文件夹下。不管是X86系统还是X64系统,都要复制该X86文件夹。

 (4)调试运行

F5或者启动运行,无错误。

2、界面设计

(1)整体布局

 (2)设置Image相关属性

①设置ImageBox控件Enable为False,否则程序运行起来鼠标在控件上滚动会会对图像进行缩放

 ②设置ImageBox控件SizeMode为Zoom,即根据控件大小调整显示的图像对应的尺寸大小

 3、添加相应控件事件程序

(1)全局变量

        private MmTimer userTimer = new MmTimer();  //精确定时器Capture cap;int fps;                    //影片帧率int numFrames;              //影片总帧数int videoWidth;             //影片宽度int videoHeight;            //影片高度int currentFrame = 0;       //当前帧double setFrame = 0;        //定位到的帧bool isStart = false;       //是否播放

(2)打开影片

        private void btnOpenFile_Click(object sender, EventArgs e){try{//打开视频OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "MP4文件|*.mp4|AVI文件|*.avi|RMVB文件|*.rmvb|WMV文件|*.wmv|MKV文件|*.mkv|所有文件|*.*";if (openFileDialog.ShowDialog() == DialogResult.OK){txtFileName.Text = openFileDialog.SafeFileName;////Application.Idle += Application_Idle;         //事件方式cap = new Capture(openFileDialog.FileName);     //读入视频//fps = (int)cap.GetCaptureProperty(CapProp.Fps);                     //获取视频帧率txtFps.Text = fps.ToString();numFrames = (int)cap.GetCaptureProperty(CapProp.FrameCount);        //获取视频总帧数txtFrameNums.Text = numFrames.ToString();videoWidth = (int)cap.GetCaptureProperty(CapProp.FrameWidth);       //获取视频宽度txtWidth.Text = videoWidth.ToString();videoHeight = (int)cap.GetCaptureProperty(CapProp.FrameHeight);     //获取视频高度txtHeight.Text = videoHeight.ToString();}}catch{MessageBox.Show("操作异常", "提示!!!");}}

(3)播放和暂停

        private void btnPlay_Click(object sender, EventArgs e){if (txtFileName.Text == ""){MessageBox.Show("请先打开视频");return;}if (btnPlay.Text == "播放"){isStart = true;btnPlay.Text = "暂停";//cap.SetCaptureProperty(CapProp.PosFrames, currentFrame);txtCurrentFrame.Text = currentFrame.ToString();   //当前播放的帧数Mat a = cap.QuerySmallFrame();imageBox1.Image = a;GC.Collect();PlayTimeSet();}else if (btnPlay.Text == "暂停"){isStart = false;btnPlay.Text = "播放";userTimer.Stop();}}

http://www.lryc.cn/news/114820.html

相关文章:

  • LeetCode150道面试经典题-买卖股票的最佳时机(简单)
  • 【积水成渊】CSS磨砂玻璃效果和渐变主题色文字
  • JVM、JRE、JDK三者之间的关系
  • input 标签的 type 属性有哪些值?分别表示什么意思?
  • (十五)大数据实战——hive的安装部署
  • MySQL安装和卸载
  • ELK、ELFK日志分析系统
  • JVM基础篇-StringTable
  • 探秘手机隐藏的望远镜功能:开启后,观察任何你想看的地方
  • 正运动亮相2023半导体设备材料与核心部件展示会,助力半导体产业高速高精应用
  • 如何在MongoDB中添加新用户
  • 幻读怎么复现
  • 无脑入门pytorch系列(二)—— torch.mean
  • ansible-kubeadm在线安装高可用K8S集群v1.19-v1.20版本
  • Cesium entity 渐隐渐显、闪烁
  • LISA:通过大语言模型进行推理分割
  • opencv基础40-礼帽运算(原始图像减去其开运算)cv2.MORPH_TOPHAT
  • php中的array_filter()函数
  • ArcGIS Pro基础:【按顺序编号】工具实现属性字段的编号自动赋值
  • neo4j终端操作
  • 【深度学习】在 MNIST实现自动编码器实践教程
  • SpringBoot3基础用法
  • 6、移除链表元素
  • 大厂容器云实践之路(一)
  • 《合成孔径雷达成像算法与实现》Figure3.1
  • 代码随想录算法训练营day60
  • Modbus TCP转Profibus DP网关modbus tcp报文解析
  • 对 Promise 的理解
  • Vuex:Vue.js应用程序的状态管理模式
  • Unity之ShaderGraph 节点介绍 Utility节点