使用Emgu.CV将tif保存视频,并用AxWindowsMediaPlayer打开

  1. 使用Emgu.CV将tif保存视频,非常简单

打开:

cs 复制代码
 VideoWriter   writer = new VideoWriter(name, VideoWriter.Fourcc('M', 'J', 'P', 'G'), displayRate, new Size(width, height), false);

写入

cs 复制代码
 writer.Write(mat);

关闭

cs 复制代码
 writer.Dispose();

完整代码如下:

cs 复制代码
using Emgu.CV;
using System;
using System.Drawing;

    public class CVideoFiles
    {
        private VideoWriter writer;
        private bool isOpen = false;

        // 打开视频文件
        public void OpenVideo(string name, int displayRate, int width, int height)
        {
            // 如果视频已经打开,抛出异常
            if (isOpen)
            {
                throw new InvalidOperationException("视频文件已经打开,请关闭当前文件后再打开新的文件。");
            }
            // 打开视频文件并设置编码器,帧率,分辨率
            writer = new VideoWriter(name, VideoWriter.Fourcc('M', 'J', 'P', 'G'), displayRate, new Size(width, height), false);

            // 如果视频文件没有成功打开,抛出异常
            if (!writer.IsOpened)
            {
                throw new InvalidOperationException("打开视频文件失败,请检查文件路径或编码器设置。");
            }

            isOpen = true;
        }

        // 写入一帧视频
        public void WriteVideo(Mat mat)
        {
            if (!isOpen)
            {
                throw new InvalidOperationException("视频尚未打开,无法写入视频帧。");
            }

            // 检查视频帧数据是否有效
            if (mat == null || mat.IsEmpty)
            {
                throw new ArgumentException("无效的帧数据,无法写入视频。");
            }


            // 写入视频帧
            writer.Write(mat);
        }

        // 关闭视频文件
        public void CloseVideo()
        {
            if (isOpen)
            {
                // 释放 VideoWriter 对象
                writer.Dispose();
                isOpen = false;
            }
            else
            {
                throw new InvalidOperationException("视频文件未打开,无法关闭。");
            }
        }
    }
  1. 保存的avi视频,用AxWindowsMediaPlayer打开

给AxWindowsMediaPlayer控制的URL 赋值,就会自动播放,如:

cs 复制代码
   axWindowsMediaPlayer1.URL = "c:\\1.avi";

如果AxWindowsMediaPlayer打不开,提示报错,说明MediaPlayer缺少解码器, 从 Download K-Lite Codec Pack (codecguide.com) 下载K-Lite_Codec_Pack_1865_Standard .exe,安装就可以了。

相关推荐
Alice-YUE3 分钟前
前端 × AI:从 Cursor 到 Transformer,一份完整认知路径
前端·人工智能·transformer·ai编程·前端开发·cursor
weixin_382395236 分钟前
本地部署 ERP 选型记录:从 Excel 到轻量系统的这几年
数据库·人工智能·数据挖掘
Code_Solitude25 分钟前
C语言:关于二维数组的作业总结
java·c语言·前端
2401_8914092633 分钟前
期货量化用得上的几类行情数据:逐笔、Level2、分钟线和五档tick
数据库
专业程序开发源1 小时前
django新闻推荐系统70655-计算机课程设计、毕业设计
java·javascript·spring boot·后端·python·django·课程设计
acd120091 小时前
前端随笔:数据明明变了,Vue 页面就是不更新
前端·javascript·vue.js
海绵宝宝转agent1 小时前
基于Redis ZSet+AOP+注解实现限流注解算法
数据库·redis·算法
imDwAaY2 小时前
Redis 也能做消息队列?从 Stream 的存储讲到消费确认
数据库·redis·缓存
@Mike@2 小时前
13-数据库学习笔记(查询执行处理模型)
数据库·笔记·学习
弈栈录2 小时前
MySQL 事务、索引与锁:后端开发必须掌握的数据库基础
数据库·后端