[OPEN CV] 常用视频操作方法

一、视频的定义

视频(Video)泛指将一系列静态影像以电信号的方式加以捕捉、纪录、处理、储存、传送与重现的各种技术。连续的图像变化每秒超过24帧(frame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面;看上去是平滑连续的视觉效果,这样连续的画面叫做视频。视频技术最早是为了电视系统而发展,但现在已经发展为各种不同的格式以利消费者将视频记录下来。网络技术的发达也促使视频的纪录片段以串流媒体的形式存在于因特网之上并可被电脑接收与播放。视频与电影属于不同的技术,后者是利用照相术将动态的影像捕捉为一系列的静态照片。

二、OPEN CV视频处理流程

三、OPEN CV支持的s

1、非压缩格式的AVI文件(或是MPEG1格式的),这个不需要装任何插件就可以播放了。

2、DIVX格式的AVI,这也是MPEG4的一种,安装最新的DIVX 5.21(目前最新版),就可以播放了,不过缺点是在播放之初会有一个DIVX的标记显示几秒。

下载地址: http://gupin.fangdown.com/soft/138.htm

3、XVID格式的AVI,这也是MPEG4的一种,可以说是从DIVX变种而来的,据说是XVID原作者不满意DIVX商业化收费的行为,而开发的一个全Free的MPEG4编码核心,安装最新的XVID(1.02版)就可以播放。

下载地址: http://gupin.fangdown.com/soft/45.htm

4、ffdshow MPEG-4格式的AVI,现在越来越多的AVI都采用ffdshow MPEG-4来,集成了DIVX与XVID的一种东西(好象还支持WMV与AC3音频),因此如果你装了ffdshow MPEG-4,就可以不用装XVID与DIVX等编码核心了。另外ffdshow MPEG-4也提供丰富的滤镜功能比如增亮,增加锐度等,最新的ffdshow MPEG-4 Video Decoder 20041012。

下载地址:http://gupin.fangdown.com/soft/383.htm

5、WMV9格式的AVI,微软自己推出的MPEG4编码标准,使用Windows Media 9.0就可以播放,如果没有的话,也可以下载一个Windows Media Encoder 9.0,使你的系统支持WMV 9.0的格式。

下载地址:http://www.ogg.cn/Software/view-software-62.html

6、VP6格式的AVI,也是一种MPEG4的编码格式,On2 Technologies开发的编码器,VP6号称在同等码率下,视频质量超过了Windows Media 9、Real 9和H.264。VP6视频编码器目前被中国的EVD所采用。说真的,现在用这个不多。最新版本是VP6 vfw Codec 6.2.6.0。

四、OPEN CV处理

int main()
{
    cout << "请输入您要运行的功能:" << endl;
    cout << "1:批量读取目录下的图片并展示:" << endl;
    cout << "2:将视频中的帧保存为图片" << endl;
    cout << "3:将图片合成为视频" << endl;
    cout << "请输入您的选择:" << endl;
    int iopt;
    cin >> iopt;
    switch (iopt)
    {
    case 1://批量读取文件目录图片并展示
    {
        char filename[50] = { 0 };
        char winname[50] = {"winimg"};
        Mat winimg;
        for (int i = 1; i <= 2; i++)
        {
            snprintf(filename, 50, "C:\\dev\\res\\IMG_%d.JPG", i);
            //strcpy_s(winname, filename);
            winimg=imread(filename);
            if (winimg.empty()) break;
            imshow(winname, winimg);
            if (waitKey(3000) >= 0) break;
        }
        destroyAllWindows();
        break;
    }
    case 2:
    {
        //将视频拆分成图片保存
        char outfile[50] = { 0 };
        VideoCapture cap;
        cap.open("C:\\dev\\res\\test.mp4");
        if (!cap.isOpened())
        {
            cout << "视频打开失败" << endl;
            return -1;
        }
        Mat frame;
        int totalframe = cap.get(CV_CAP_PROP_FRAME_COUNT);
        for(int i=0;i<totalframe;i++)
        {
            cap >> frame;
            if (frame.empty()) break;
            snprintf(outfile, 50, "C:\\dev\\res\\IMG_%d.jpg", i);
            imshow("img", frame);
            imwrite(outfile, frame);
            if (waitKey(20) >= 0) break;
        }
        destroyAllWindows();
        break;
    }
    case 3://图像合成视频
    {
        char filename[50] = { 0 };
        Size size0 = Size(960, 540);
        VideoWriter writer("c:\\dev\\res\\merge.avi",CV_FOURCC(‘X‘,‘V‘,‘I‘,‘D‘),20,size0,true);
        Mat frame;
        for (int i = 0; i < 215; i++)
        {
            snprintf(filename, 50, "C:\\dev\\res\\IMG_%d.jpg", i);
            frame = imread(filename);
            if (frame.empty()) break;
            imshow("winname", frame);
            writer << frame;
        }
        destroyAllWindows();
        break;
    }
    }
    return 0;
}

原文地址:https://www.cnblogs.com/newzol/p/9063019.html

时间: 2024-11-05 16:04:10

[OPEN CV] 常用视频操作方法的相关文章

常用视频编码解码器

视频部分 Working video codecs codec name fourcc codecfile out comments MPEG-PES output (.mpg or DXR3/DVB card) - - MPES for hardware decoding MPEG-1 or 2 (libmpeg2) - DVR hdv2 mpg1 PIM1 VCR2 mpg2 - YV12 I420 IYUV 422P with postprocessing FFmpeg MPEG-1 -

常用视频格式与视频编解码标准介绍 转

细细算起来,视频文件可以分成两大类:其一是影像文件,比如说常见的VCD便是一例.其二是流式视频文件,这是随着国际互联网的发展而诞生的后起视频之秀,比如说在线实况转播,就是构架在流式视频技术之上的.流式视频(Streaming Video)采用一种"边传边播"的方法,即先从服务器上下载一部分视频文件,形成视频流缓冲区后实时播放,同时继续下载,为接下来的播放做好准备.这种"边传边播"的方法避免了用户必须等待整个文件从Internet上全部下载完毕才能观看的缺点. 1.A

Open CV 播放视频(2)

? 演示:读取一个视频,然后播放,ESC退出. ? #include?"stdafx.h"?? #include?<opencv2/core/core.hpp>?? #include?<opencv2/contrib/contrib.hpp>?? #include?<opencv2/highgui/highgui.hpp>?? #include?<opencv2/imgproc/imgproc.hpp>?? #include?<op

拍大师导出其他格式视频操作方法图文教程

拍大师是一款很好用的视频制作软件,大家再用它制作好视频后怎么导出视频呢?小编给大家小小的分享下,导出的视频格式如果默认的不是自己想要的,那怎么办呢?小编告诉大家怎么使用拍大师导出其他格式的视频?这样大家就可以根据自己的需要来选择自己的视频格式了. 步骤一:如果需要导出制作好的作品为其他视频格式,你可以打开创作工场,点左上方我的作品,然后鼠标移到你要导出的视频上面,点"导出"按钮--然后点确定 步骤二:选择你需要导出的视频格式,然后点"选择路径"按钮,选择你导出后的视

Java线程常用的操作方法

目标: 了解设置和取得线程的名称. 了解线程的强制运行. 了解线程的休眠. 了解线程的礼让. 了解线程的中断操作. 具体内容:在多线程中所有的操作方法实际上都是从Thread类开始的.所有的操作都是在Thread类之中的. 线程操作的主要方法 NO 方法名称 类型 描述 1 public Thread(Runnable target) 构造 接收Runnable接口子类对象,实例化Thread对象 2 public Thread(Runnable target,String name) 构造 接

Emgu CV播放视频

public partial class Form1 : Form {     Capture _capture;     public Form1()     {         InitializeComponent();         _capture = new Capture(“url”);//视频文件路径         _capture.ImageGrabbed += _capture_ImageGrabbed;//添加回调函数         _capture.Start();

Python中文件常用的操作方法

f=open('小重山','r',encoding='utf-8') 1.f.readline() f.readline()打印一行内容,遇到换行符,确定是一行.多次打印,会接着打印下一行.因为光标已经移到第一句的最后一位.下次打印紧接着光标打印.注意:文本每一行最后默认有个换行符,print默认也会输出一个换行符 2.f.readlines()['昨夜寒蛩不住鸣.\n', '惊回千里梦,已三更.\n', '起来独自绕阶行.\n', '人悄悄,帘外月胧明.\n', '白首为功名.\n', '旧山

线程常用的操作方法

1.Thread(Runnable target) 分配新的Thread对象 2.Thread(Runnable target,String name) 分配新的Thread对象 3.Thread(String name) 分配新的Thread对象 4.static Thread currentThread() 返回对当前正在执行的线程对象的引用 5.long getId() 返回该线程的标识符 6.String getName() 返回该线程的名称 7.void setName(String

Asp.Net常用文件操作方法

using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Web; using System.Net; using System.Threading; using EcmaScript.NET; using Yahoo.Yui.Compressor; using System.Xml; using System.Data.OleDb; using System.