<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                ##顯示視頻流的幀率 最近做一個東西,需要在視頻上實時顯示幀速,即FPS。FPS是Frame Per Second的縮寫,中文意思是每秒幀數。開發平臺為VS2013+OpenCV2.4.9。 FPS是測量用于保存、顯示動態視頻的信息數量。通俗來講就是指每秒變化的畫面數。 在計算FPS時,需要使用的主要函數有getTickCount、getTickFrequency。而在輸出圖像上顯示FPS水印則是使用函數putText,他們的簡單聲明如下: ~~~ GetTickCount(void); 在Debug版本中,設備啟動后便從計時器中減去180秒。這樣方便測試使用該函數的代碼的正確溢出處理。 在Release版本中,該函數從0開始計時,返回自設備啟動后的毫秒數(不含系統暫停時間)。 ~~~ ~~~ getTickFrequency函數:返回每秒的計時周期數,GetTickCount / getTickFrequency就得到一個周期的時間。 ~~~ ~~~ void putText(Mat& img, // 圖像矩陣 const string& text, // string型內容 Point org, // 字符串的坐標,以左下角為原點 int fontFace, // 字體類型 double fontScale, // 字體大小 Scalar color, // 字體顏色 int thickness = 1, // 字體粗細 int lineType = 8, // 直線類型 bool bottomLeftOrigin = false) // 尚不知是什么功能 ~~~ 如果想得到一段程序的運行時間,可以套用下面的例子: ~~~ t = (double)cv::getTickCount(); if (capture.isOpened()) { capture >> frame; // getTickcount函數:返回從操作系統啟動到當前所經過的毫秒數 // getTickFrequency函數:返回每秒的計時周期數 // t為該處代碼執行所耗的時間,單位為秒,fps為其倒數 t = ((double)cv::getTickCount() - t) / cv::getTickFrequency(); fps = 1.0 / t; ~~~ **實現顯示視頻幀率的簡單代碼:** ~~~ #include <stdlib.h> #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> void main() { cv::Mat frame; // 可從攝像頭輸入視頻流或直接播放視頻文件 //cv::VideoCapture capture(0); cv::VideoCapture capture("e:/VIDEO0002.mp4"); double fps; char string[10]; // 用于存放幀率的字符串 cv::namedWindow("Camera FPS"); double t = 0; while (1) { t = (double)cv::getTickCount(); if (cv::waitKey(50) == 30){ break; } if (capture.isOpened()) { capture >> frame; // getTickcount函數:返回從操作系統啟動到當前所經過的毫秒數 // getTickFrequency函數:返回每秒的計時周期數 // t為該處代碼執行所耗的時間,單位為秒,fps為其倒數 t = ((double)cv::getTickCount() - t) / cv::getTickFrequency(); fps = 1.0 / t; sprintf(string, "%.2f", fps); // 幀率保留兩位小數 std::string fpsString("FPS:"); fpsString += string; // 在"FPS:"后加入幀率數值字符串 // 將幀率信息寫在輸出幀上 putText(frame, // 圖像矩陣 fpsString, // string型文字內容 cv::Point(5, 20), // 文字坐標,以左下角為原點 cv::FONT_HERSHEY_SIMPLEX, // 字體類型 0.5, // 字體大小 cv::Scalar(0, 0, 0)); // 字體顏色 cv::imshow("Camera FPS", frame); } else { std::cout << "No Camera Input!" << std::endl; break; } } } ~~~ 以上這段程序可以大致測試出視頻處理算法的時間消耗。主要過程是使用以上兩個主要函數得到每幀之間的時間,再用putText把FPS的數值顯示到屏幕上。 ![](https://box.kancloud.cn/2015-12-30_5683a769e0caf.jpg) 參考資料:[http://www.cnblogs.com/jxsoft/archive/2011/10/17/2215366.html](http://www.cnblogs.com/jxsoft/archive/2011/10/17/2215366.html) [http://blog.csdn.net/boksic/article/details/7017837](http://blog.csdn.net/boksic/article/details/7017837)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看