Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

วิธีคำนวณเวลาที่ผ่านไป (Elapsed Time) ของวิดีโอใน OpenCV C++


ภาพรวม

สาธิตการอ่าน Elapsed Time (เวลาที่เล่นไปแล้ว) ของวิดีโอขณะ Playback โดยใช้ CAP_PROP_POS_MSEC

โค้ดตัวอย่าง C++

#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;

int main() {
    Mat myImage;
    namedWindow("Video Player");
    VideoCapture cap("video.mp4");
    
    if (!cap.isOpened()) {
        cout << "No video stream detected" << endl;
        system("pause");
        return -1;
    }
    
    while (true) {
        cap >> myImage;
        int elapsed_time = cap.get(CAP_PROP_POS_MSEC);
        cout << "Elapsed time (seconds): " << elapsed_time / 1000 << endl;
        
        if (myImage.empty()) break;
        imshow("Video Player", myImage);
        
        char c = (char)waitKey(25);
        if (c == 27) break;
    }
    
    cap.release();
    return 0;
}

คำอธิบาย

  • CAP_PROP_POS_MSEC: ตำแหน่งปัจจุบันในหน่วย Milliseconds
  • หาร 1000 เพื่อได้วินาที
  • ลูป While อ่านเฟรมต่อเนื่อง แสดงภาพ และพิมพ์เวลา
  • waitKey(25): รอ 25ms ≈ 40 FPS

ผลลัพธ์

เล่นวิดีโอในหน้าต่าง "Video Player" พร้อมพิมพ์เวลาที่ผ่านไป (วินาที) ใน Console ทุกเฟรม

วิธีคำนวณเวลาที่ผ่านไป (Elapsed Time) ของวิดีโอใน OpenCV C++
วิธีคำนวณเวลาที่ผ่านไป (Elapsed Time) ของวิดีโอใน OpenCV C++