本文介绍了openCV:如何将视频拆分为图像序列?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!
问题描述
使用opencv,如何将视频分割成图像序列?
我如何拆分它以便输出将是一系列图像?
Using opencv, how can one split a video into an image sequence?
How can i split it so that the output will be a sequence of images?
推荐答案
令我惊讶的是,我在 StackoverFlow 上找不到这个问题的答案.
For my surprise, I couldn't find an answer to this question on StackoverFlow.
我目前使用的是 OpenCV 2.1.这可能有点旧,但它就像一个魅力.该程序将读取一个输入文件并在名为 *frame_xx.jpg* 的当前文件夹上创建一系列图像
I'm currently using OpenCV 2.1. This might be a little old but it works like a charm. The program will read an input file and create a sequence of images on the current folder named *frame_xx.jpg*
#include <stdio.h>
#include <stdlib.h>
#include "cv.h"
#include "highgui.h"
int main( int argc, char** argv )
{
if (argc < 2)
{
printf("!!! Usage: ./program <filename>
");
return -1;
}
printf("* Filename: %s
", argv[1]);
CvCapture *capture = cvCaptureFromAVI(argv[1]);
if(!capture)
{
printf("!!! cvCaptureFromAVI failed (file not found?)
");
return -1;
}
int fps = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS);
printf("* FPS: %d
", fps);
IplImage* frame = NULL;
int frame_number = 0;
char key = 0;
while (key != 'q')
{
// get frame
frame = cvQueryFrame(capture);
if (!frame)
{
printf("!!! cvQueryFrame failed: no frame
");
break;
}
char filename[100];
strcpy(filename, "frame_");
char frame_id[30];
itoa(frame_number, frame_id, 10);
strcat(filename, frame_id);
strcat(filename, ".jpg");
printf("* Saving: %s
", filename);
if (!cvSaveImage(filename, frame))
{
printf("!!! cvSaveImage failed
");
break;
}
frame_number++;
// quit when user press 'q'
key = cvWaitKey(1000 / fps);
}
// free resources
cvReleaseCapture(&capture);
return 0;
}
这篇关于openCV:如何将视频拆分为图像序列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!
The End


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)