1 OpenCV打开摄像头显示摄像头帧率
通过OpenCV打开摄像头,并获取摄像头的视频帧进行显示或者继续进一步后处理,我们都希望显示当前的帧率,特别是对于实时性要求较高的应用,比如说实时目标检测,下面给出了一段显示OpenCV摄像头帧率的示例代码,可供参考。
#include <iostream>
#include <chrono>
#include <opencv2/opencv.hpp>
int main()
{
cv::VideoCapture camera_reader;
camera_reader.set(cv::CAP_PROP_FRAME_WIDTH, 640); //设置宽度
camera_reader.set(cv::CAP_PROP_FRAME_HEIGHT, 480); //设置长度
camera_reader.set(cv::CAP_PROP_FOURCC, cv::VideoWriter::fourcc('M', 'J', 'P', 'G'));
camera_reader.set(cv::CAP_PROP_FPS, 30); // 帧率
camera_reader.open(0);
int camera_fps = 0;
while (camera_reader.isOpened())
{
auto beforeTime = std::chrono::steady_clock::now();
cv::Mat input_frame;
camera_reader.read(input_frame);
if (input_frame.empty())
break;
// 视频帧上增加FPS
std::string str = "FPS:" + std::to_string(camera_fps);
cv::putText(input_frame, str.c_str(), cv::Point(10, 30), cv::FONT_HERSHEY_COMPLEX, 1, cv::Scalar(0, 255, 255), 2, 8, 0);
cv::imshow("camera", input_frame);
if (27 == cv::waitKey(33))
break;
auto afterTime = std::chrono::steady_clock::now();
double duration_millsecond = std::chrono::duration<double>(afterTime - beforeTime).count();
camera_fps = int(1 / duration_millsecond);
}
cv::destroyWindow("camera");
camera_reader.release();
return 0;
}
在上述代码中,我们使用std::chrono
计算每一帧的耗时,然后计算每一次的帧率,帧率显示的示例图片如下:
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:OpenCV – OpenCV打开摄像头显示摄像头帧率
原文链接:https://www.stubbornhuang.com/2708/
发布于:2023年06月29日 17:00:22
修改于:2023年06月29日 17:00:22
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50