#include <iostream>
#include <opencv2/opencv.hpp>
#include <ctime>
#include <windows.h> // DWORD 数据类型所用
#pragma comment(lib,"winmm.lib") // 该依赖库为timeGetTime()函数所用
#include <fstream> // 为输出流写入文件所用
int main() {
cv::VideoCapture capture("E://demo_codes//shared_codes//FrontOD//3D_Vision//chessboard.avi");
int frameCount = capture.get(cv::CAP_PROP_FRAME_COUNT); // 获取视频总帧数
int fps = capture.get(cv::CAP_PROP_FPS); // 获取视频FPS
DWORD star_time = timeGetTime();
while (1) {
cv::Mat frame;
capture >> frame;
if (frame.empty()) {
std::cout << "Display Done!" << std::endl;
break;
}
cv::imshow("读取视频", frame);
cv::waitKey(1);
}
DWORD end_time = timeGetTime();
int timeDiff = (end_time - star_time) / 1000;
std::cout << "timeDiff:" << timeDiff <<"s" << std::endl;
std::cout << "sum frame:" << frameCount << std::endl;
std::cout << "fps:" << fps << std::endl;
std::ofstream Log("E://demo_codes//shared_codes//FrontOD//3D_Vision//log.txt");
time_t t = std::time(nullptr); // 获取指针指向的 结构体为time_t 的时间戳
struct tm* now = std::localtime(&t); // 获取当地时间
char str_ftime[50];
strftime(str_ftime, sizeof(str_ftime), "%Y-%m-%d %H-%M-%S", now); // 按格式输出当地时间
Log << "## log_Vedio ******" << str_ftime << std::endl; //向Log.txt文件写入内容
Log << " " << std::endl;
Log << "fps:" << fps << std::endl;
Log << " " << std::endl;
Log << "timeDiff:" << timeDiff << std::endl;
Log.close();
return 0;
}
PS:在运行时可能会出现的问题
1.报错提示
解决方法:
在项目处右键”属性“–>”C/C++“–>“命令行”–>在下方输入"/D_CRT_SECURE_NO_WARNINGS"