#include <iostream>
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
void main()
{
VideoCapture cap("G:\\11_10_13.mp4");
if (!cap.isOpened())
{
return;
}
long totalFrameNumber = cap.get(CV_CAP_PROP_FRAME_COUNT);
cout << "The whole video has" << totalFrameNumber << "frames." << endl;
double frameRate = cap.get(CV_CAP_PROP_FPS);
cout << "The frame rate of the video is: " << frameRate << endl;
long frameToStart = 200;
cap.set(CV_CAP_PROP_POS_FRAMES, frameToStart);
cout << "From the " << frameToStart << "th frame to read." << endl;
int imgIndex(frameToStart);
for (; ; )
{
Mat frame;
cap >> frame;
if (frame.empty())
{
break;
}
char* imageSaveName = new char[64];
sprintf(imageSaveName, "G:\\11_10_13\\%05d.jpg", imgIndex);
imwrite(imageSaveName, frame);
delete[] imageSaveName;
imgIndex++;
}
cout << "total frames: " << imgIndex << endl;
}
在視頻操作中,經常需要將視頻轉換爲圖像序列進行操作,這段代碼的功能是“把從第n幀開始的視頻的每一幀轉化爲圖片進行保存”。代碼親測可用,歡迎提問。