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。 –