加賀一稿一記

心は戦国

opencvでFPSを表示

処理速度が気になってFPSを表示したいとき用のクラス.

#include "opencv2/opencv.hpp"
#include <chrono>
#include <sstream>

class FPS{
private:
	std::chrono::system_clock::time_point Lstms;

public:
	void putFps(cv::Mat m){
		auto nowms = std::chrono::system_clock::now();
		auto diff = nowms - Lstms;
		Lstms = nowms;
		std::stringstream ss;
		ss << int(1000.0 / double(std::chrono::duration_cast<std::chrono::milliseconds>(diff).count()));
		cv::putText(m, ss.str(), cv::Point(0, 20), cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(255));
	}

};

使う前に

FPS fps;

とかで宣言しといて,

fps.putFps(frame);

ってしてやるとMatにFPSを書き込んでくれる.

もっときれいに書けるだろうけど,そこまで重要じゃなさそう.