首页 > 编程 > C > 正文

Opencv 视频转为图像序列的实现

2020-01-26 13:22:30
字体:
来源:转载
供稿:网友

基于OpenCV的视频转为图像序列方法:

基于C++版本

#include <iostream>#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 <iostream>#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帧图像,运行结果部分截图如下:

以上这篇Opencv 视频转为图像序列的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选