#include
#include
using namespace std;
using namespace cv;
int main() {
VideoCapture cap("C:/video/input.avi");
if (!cap.isOpened()) return -1;
int frameIdx = 0;
Mat frame;
while (true) {
cap >> frame;
if (frame.empty()) break;
char filename[256];
sprintf(filename, "C:/output/frame_%05d.jpg", frameIdx++);
imwrite(filename, frame);
}
cout << "Total frames: " << frameIdx << endl;
return 0;
}
#include
#include
#include
int main() {
CvCapture* capture = cvCreateFileCapture("C:/video/input.avi");
IplImage* frame;
int frameIdx = 0;
while (1) {
frame = cvQueryFrame(capture);
if (!frame) break;
char filename[256];
sprintf(filename, "C:/output/frame_%05d.jpg", frameIdx++);
cvSaveImage(filename, frame);
}
cvReleaseCapture(&capture);
printf("Total frames: %d\n", frameIdx);
return 0;
}
VideoCapture / cvCreateFileCapture 打開視頻文件cap >> frame 或 cvQueryFrameimwrite / cvSaveImage 保存圖像,支持 jpg/png/bmp 等%05d 保證按序號排序cvReleaseCapture用 OpenCV 自帶 Megamind.avi (270 幀) 測試,成功輸出 270 張 jpg 圖片。
