OpenCV-播放CPU使用率

时间:2018-07-11 20:04:40

标签: c++ opencv h.264

我正在研究需要在两个方向(向前或向后)播放两个录制的视频的项目。

两个视频均使用H.264编码并行记录。

我已经使用OpenCV 3.2.0在C ++中编写了一个非常简单的代码(见下文):

为控制播放方向,我定义了两个标志(“ play_left_backward ”,“ play_right_backward

如果我将两个标志都设置为“ false”,则代码运行时使用的CPU不到百分之一。

如果仅将其中一个标志设置为“ true”,则代码将使用大约2%的CPU。

但是如果我将两个标志都设置为“ true”,则代码将使用 28%的CPU运行。

我不明白这种奇怪行为的原因。

有人有什么解释吗?

#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"

int main() {

   bool play_left_backward = true;
   bool play_right_backward = true;

   cv::Mat frame_left;
   cv::Mat frame_right;

   cv::VideoCapture cap_left("D:\\record_left.avi");
   cv::VideoCapture cap_right("D:\\record_right.avi");

   // amount of frames
   int N = (int)cap_left.get(7);

   for (int i = 0; i < N; i++) {

       if (play_left_backward == true) {
          cap_left.set(1, N - i - 1);
       }

       if (play_right_backward == true) {
          cap_right.set(1, N - i - 1);
       }

       cap_left >> frame_left;
       cap_right >> frame_right;

       cv::imshow("Frame left", frame_left);
       cv::imshow("Frame right", frame_right);

       char c = (char)cv::waitKey(30);
       if (c == 27) {
          break;
       }

   }

  return 0;
}

谢谢

0 个答案:

没有答案