前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenCVSharp学习笔记(三)显示摄像头视频和媒体视频&录制

OpenCVSharp学习笔记(三)显示摄像头视频和媒体视频&录制

作者头像
MaybeHC
发布2024-04-23 19:41:53
1430
发布2024-04-23 19:41:53
举报
文章被收录于专栏:技术之路技术之路

显示摄像头视频

直接上代码

代码语言:javascript
复制
            Cv2.NamedWindow("video", WindowFlags.AutoSize);
            Cv2.ResizeWindow("video", 640, 480);
            //获取视频设备
            FrameSource frame = Cv2.CreateFrameSource_Camera(0);
            Mat mat = new Mat();
            //逐帧放入
            while (true)
            {
                //从摄像头读视频帧
                frame.NextFrame(mat);
                //视频帧在窗口中显示
                Cv2.ImShow("video", mat);
                Cv2.WaitKey(1);
            }

这里我们主要用了这个方法来打开摄像头,参数为摄像头索引

代码语言:javascript
复制
FrameSource frame = Cv2.CreateFrameSource_Camera(0);

然后读取摄像头的每一帧

代码语言:javascript
复制
frame.NextFrame(mat);

然后我们将每一帧做了显示

代码语言:javascript
复制
Cv2.ImShow("video", mat);

成功打开摄像头

在这里插入图片描述
在这里插入图片描述

显示媒体视频

显示媒体视频的方法基本和显示摄像头的相同

代码语言:javascript
复制
            Cv2.NamedWindow("video", WindowFlags.AutoSize);
            Cv2.ResizeWindow("video", 640, 480);
            //通过媒体文件读取视频帧
            FrameSource frame = Cv2.CreateFrameSource_Video(@"C:\Users\Mr_chong\Music\MV\11.mp4");
            Mat mat = new Mat();
            //逐帧放入
            while (true)
            {
                //从摄像头读视频帧
                frame.NextFrame(mat);
                //视频帧在窗口中显示
                Cv2.ImShow("video", mat);
                Cv2.WaitKey(40);
            }

只有该方法存在差异,参数为媒体文件的路径

代码语言:javascript
复制
 FrameSource frame = Cv2.CreateFrameSource_Video(@"C:\Users\Mr_chong\Music\MV\11.mp4");
在这里插入图片描述
在这里插入图片描述

视频录制

视频录制的方法也比较简单,只需要使用VideoWriter类进行录制,将获取到的每帧画面放入,并设置路径和输出格式即可

代码语言:javascript
复制
 VideoWriter videoWriter = new VideoWriter(@"./out.avi", VideoWriter.FourCC(@"XVID"), 20, new Size(640, 480));

VideoWriter.FourCC 参数为视频文件格式,XVID对应输出avi格式视频 ,MJPG对应输出MP4格式视频,其余的大家可以查询。该方法第一个参数为视频输出路径,第二个参数为格式,第三个参数为保存的帧率,第四个参数为尺寸建议为摄像头尺寸,否则可能无法保存。 下面附上代码,之前的代码都是CV2风格的代码,这次使用C#风格的代码形式,注释都标注了大家可以自己对应下CV2风格的代码。

代码语言:javascript
复制
  Window window = new Window("video");
            window.Resize(640, 480);
            VideoCapture video = new VideoCapture(0);
            VideoWriter videoWriter = new VideoWriter(@"./out.avi", VideoWriter.FourCC(@"XVID"), 20, new Size(640, 480));
            Mat mat = new Mat();
            while (video.IsOpened())
            {
                //从摄像头读视频帧
                if (video.Read(mat))
                {
                    videoWriter.Write(mat);
                    //视频帧在窗口中显示
                    window.ShowImage(mat);
                    var key = Cv2.WaitKey(1);
                    if (key == 27)
                    {
                        break;
                    }
                }
                else
                {
                    break;
                }

            }
            //释放资源
            video.Release();
            mat.Release();
            Cv2.DestroyAllWindows();
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 显示摄像头视频
  • 显示媒体视频
  • 视频录制
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com