用c++编写一段程序,利用opencv读取一段视频,并在读取的视频上实时显示这段视频的帧率
时间: 2023-10-04 21:13:48 浏览: 62
好的,下面是使用C++和OpenCV读取视频并显示帧率的示例代码:
```c++
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
// 打开视频文件
VideoCapture cap("video.mp4");
// 检查视频是否打开成功
if (!cap.isOpened()) {
cerr << "Error: cannot open the video file." << endl;
return -1;
}
// 获取视频的总帧数
int totalFrames = cap.get(CAP_PROP_FRAME_COUNT);
// 创建窗口
namedWindow("Video Player", WINDOW_NORMAL);
// 读取并显示视频帧
Mat frame;
double fps;
int delay = 0;
while (cap.read(frame)) {
// 计算帧率
double t = (double)cv::getTickCount();
fps = cv::getTickFrequency() / (cv::getTickCount() - t);
// 在图像上绘制帧率
putText(frame, format("FPS: %.2f", fps), Point(50, 50),
FONT_HERSHEY_SIMPLEX, 1, Scalar(0, 0, 255), 2);
// 显示视频帧
imshow("Video Player", frame);
// 等待一段时间
delay = (int)(1000 / cap.get(CAP_PROP_FPS));
if (waitKey(delay) == 27) {
break;
}
}
// 释放资源
cap.release();
destroyAllWindows();
return 0;
}
```
这段代码会打开名为 "video.mp4" 的视频文件,并在一个名为 "Video Player" 的窗口中显示视频帧。程序会在每一帧上绘制帧率,并在窗口标题栏中显示当前帧数和总帧数。如果用户在窗口中按下 ESC 键,程序会退出并释放资源。