<pre name="code" class="cpp"><pre name="code" class="cpp">#include <opencv2/highgui/highgui.hpp> #include <opencv2\opencv.hpp> #include <iostream> #include <math.h> #include <stdio.h> #include <vector> using namespace cv; using namespace std;
int main(int argc, char *argv[]) { CvCapture* capture = cvCaptureFromAVI("C:\\Users\\hsn\\Desktop\\fish-120.avi"); int i = 0; IplImage* img = 0; char image_name[50]; cvNamedWindow( "vivi"); //读取和显示 while(1) { img = cvQueryFrame(capture); //获取一帧图片 if(img == NULL) break; cvShowImage( "vivi", img ); //将其显示 char key = cvWaitKey(20); sprintf(image_name, "%s%d%s", "C:\\Users\\hsn\\Desktop\\tutu\\image", ++i, ".jpg");//保存的图片名 cvSaveImage( image_name, img); //保存一帧图片 } cvReleaseCapture(&capture); cvDestroyWindow("vivi"); return 0; }
//int main(int argc, char **argv) //{ // // int period = atoi(argv[1]); //帧间隔,每隔多少帧取其中一张截图 // int count = atoi(argv[2]); //文件编号开始计数值 // char filename[128]; // CvCapture *capture = cvCreateFileCapture(argv[3]); //打开视频文件 // if (capture == NULL) // { // return - 1; // } // IplImage *frame; // while (1) // { // for (int i = 0; i < period; i++) // { // frame = cvQueryFrame(capture); // if (!frame) // { // // printf("finish!\n"); // // system("pause"); // return 0; // } // } // sprintf(filename, "img_%d.jpg", count++); // cvSaveImage(filename, frame); // } // cvReleaseCapture(&capture); // return 0; //}
原文地址:http://blog.csdn.net/hanshuning/article/details/41118373