程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Opencv 視頻轉為圖像序列

Opencv 視頻轉為圖像序列

編輯:C++入門知識

Opencv 視頻轉為圖像序列


基於OpenCV的視頻轉為圖像序列方法:

基於C++版本
#include 

#include "cv.h"
#include "opencv2/opencv.hpp"

using namespace std;
using namespace cv;

void main()
{
    VideoCapture cap("C:\\Users\\Leo\\Desktop\\Megamind.avi");
    if ( !cap.isOpened() )
    {
        return ;
    }

    int imgIndex(0);
    for ( ; ; )
    {
        Mat frame;
        cap >> frame;
        if ( frame.empty() )
        {
            break;
        }

        char* imageSaveName = new char[64];
        sprintf( imageSaveName, "C:\\Users\\Leo\\Desktop\\new\\%05d.jpg", imgIndex );
        imwrite( imageSaveName, frame );
        delete[] imageSaveName;
        imgIndex++;
    }
    cout << "total frames: " << imgIndex << endl;
}
基於C版本
#include 

#include "cv.h"
#include "opencv2/opencv.hpp"

using namespace std;
using namespace cv;

void main()
{
    // video read
    CvCapture *capture = cvCreateFileCapture("C:\\Users\\Leo\\Desktop\\Megamind.avi");
    IplImage *frame;

    int imgIndex(0);
    while(1)
    {
        frame = cvQueryFrame(capture);
        if ( !frame )
        {
            break;
        }

        char* imageSaveName = new char[64];
        sprintf( imageSaveName, "C:\\Users\\Leo\\Desktop\\new\\%05d.jpg", imgIndex );
        cvSaveImage( imageSaveName, frame );
        delete[] imageSaveName;
        imgIndex++;
    }
    cout << "total frames: " << imgIndex << endl;
    cvDestroyWindow( "VideoImage" );
    cvReleaseCapture( &capture );
    cvReleaseImage( &frame );
}

測試數據為OpenCV自帶的視頻:Megamind.avi,可以在opencv\sources\samples\cpp\tutorial_code\HighGUI\video-input-psnr-ssim\video路徑下查找,共270幀圖像,運行結果部分截圖如下:

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved