首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

OpenCV 視頻轉圖像序列(C++ / C 版本)

     編輯:關於C++

一、C++ 版本 (OpenCV 2.x/3.x/4.x)

#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;
}

二、C 版本 (OpenCV 1.x / C 接口)

#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 或 cvQueryFrame
  • imwrite / cvSaveImage 保存圖像,支持 jpg/png/bmp 等
  • 文件名格式 %05d 保證按序號排序
  • 釋放資源:C++ 自動 RAII,C 需手動 cvReleaseCapture

四、測試結果

用 OpenCV 自帶 Megamind.avi (270 幀) 測試,成功輸出 270 張 jpg 圖片。

輸出截圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved