1
有一段时间我一直在试图通过计算我的OpenCV的计划未来的视频流的FPS,并想知道是否有任何方式做它用计时而不是time.h中或其他任何用CPU滴答测量的API。经过大量的实验和研究后,我还没有找到使用Chrono的简单解决方案。如何使用Chrono和OpenCV计算实时视频流的FPS?
是否有保持简单愚蠢的解决方案来计算您的FPS Chrono?或者正在使用CPU ticks是不可避免的?
有一段时间我一直在试图通过计算我的OpenCV的计划未来的视频流的FPS,并想知道是否有任何方式做它用计时而不是time.h中或其他任何用CPU滴答测量的API。经过大量的实验和研究后,我还没有找到使用Chrono的简单解决方案。如何使用Chrono和OpenCV计算实时视频流的FPS?
是否有保持简单愚蠢的解决方案来计算您的FPS Chrono?或者正在使用CPU ticks是不可避免的?
你有方法
VideoCapture::get(CV_CAP_PROP_FPS) 难道不工作?
据我所知,chrono方法仍然会使用CPU Ticks。 假设你的循环是一样的东西
cv::Mat frame; cv::VideoCapture cap(video_path);
while (cap.read(frame)) {
/* .. */
}
你可以尝试像
#include <chrono>
using namespace std::chrono;
time_point<steady_clock> begin_time = steady_clock::now(), new_time;
cv::Mat frame;
cv::VideoCapture cap(video_path);
size_t frame_counter = 0;
while (cap.read(frame)) {
/* do stuff.. */
frame_counter++;
new_time = steady_clock::now();
if (new_time - begin_time >= seconds{1}) {
/* Do something with the fps in frame_counter */
frame_counter = 0;
begin_time = new_time;
}
}
尽最大努力把从不使用'.Count中()':http://www.youtube.com/watch? v = P32hvk8b13M&t = 41m15s改为:'new_time - begin_time> = 1s',或在C++ 11中:'new_time - begin_time> = seconds {1}' –
@HowardHinnant固定。谢谢 :)。 – Aram
很好的答案。 +1。 –