zoukankan      html  css  js  c++  java
  • 5、【opencv入门】批量图区图片、视频分解、视频合成

    一、批量有序读取图片

    【示例】

     1 //批量有序读取图片
     2 #include <opencv2/opencv.hpp>
     3 #include <iostream>
     4 #include <stdio.h>
     5 
     6 using namespace std;
     7 using namespace cv;
     8 
     9 int main()
    10 {
    11     //批量读取图片(有序)
    12     char filename[50];
    13     char winName[50];
    14     Mat srcImg;
    15     for (int i = 1; i < 100; i++)
    16     {
    17         sprintf(filename,"%d.bmp",i);
    18         sprintf(winName,"NO--%d",i);
    19         srcImg=imread(filename);
    20         if (srcImg.empty())
    21             break;
    22         imshow(winName,srcImg);
    23     }
    24     waitKey(0);
    25     destroyAllWindows();
    26     return 0;
    27 }

    二、视频分解成图片

    【示例】

    //视频分解成图片
    #include <opencv2/opencv.hpp>
    #include <stdio.h>
    
    using namespace cv;
    
    int main()
    {
        Mat frame;
        char outfile[50];
        VideoCapture cap("../../1.mp4");
        if (!cap.isOpened())//打开失败
            return -1;
        int totalFrame=cap.get(CV_CAP_PROP_FRAME_COUNT);//获取视频总帧数
        for (int i = 1; i <=totalFrame; i++)
        {
            cap>>frame;
            if (frame.empty())
                break;
            sprintf(outfile,"%d.bmp",i);
            imwrite(outfile,frame);
            imshow("video",frame);
            waitKey(15);
        }
        cap.release();
        destroyAllWindows();
        return 0;
    }

     

    三、图片合成视频

    【示例】

     1 //图片合成视频
     2 #include<opencv2/opencv.hpp>
     3 #include<iostream>
     4 #include<stdio.h>
     5 
     6 using namespace cv;
     7 using namespace std;
     8 
     9 int main()
    10 {
    11     VideoWriter writer("out.avi",CV_FOURCC('X','V','I','D'),20,Size(544,960),true);//Size要和图片尺寸保持一致
    12     char filename[50];
    13     Mat frame;
    14     for (int i = 1; i < 301; i++)
    15     {
    16         sprintf(filename,"%d.bmp",i);
    17         frame=imread(filename);
    18         if(frame.empty())   break;
    19         writer<<frame;
    20     }
    21     cout<<"write end!"<<endl;
    22     destroyAllWindows();
    23 
    24     return 0;
    25 }

     

  • 相关阅读:
    js右击事件
    css中的特殊居中
    js实现轮播图
    css画三角形
    Elasticsearch-5.5.0安装head插件
    Elasticsearch报错:NodeDisconnectedException[[][IP:9300][cluster:monitor/nodes/liveness] disc
    mybatis foreach多次遍历问题
    Java使用File.separator解决Win和Linux的路径问题
    WebStorm 代码提示快捷键
    springmvc 前台传日期(字符串) 后台用date接收封装失败(请求400)
  • 原文地址:https://www.cnblogs.com/Long-w/p/9661269.html
Copyright © 2011-2022 走看看