Opencv中利用VideoCapture類將視頻保存爲圖片

#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幀開始的視頻的每一幀轉化爲圖片進行保存”。代碼親測可用,歡迎提問。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章