Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ OpenCV-播放CPU使用率_C++_Opencv_H.264 - Fatal编程技术网

C++ OpenCV-播放CPU使用率

C++ OpenCV-播放CPU使用率,c++,opencv,h.264,C++,Opencv,H.264,我正在做一个项目,需要在两个方向(向前或向后)播放两个录制的视频 使用H.264编码并行录制的两个视频 我用OpenCV3.2.0:/P>编写了C++中非常简单的代码(见下文) 为了控制播放方向,我定义了两个标志(“播放左/后”,“播放右/后) 如果我将两个标志都设置为“false”,则代码运行时使用的CPU不到1% 如果我只将其中一个标志设置为“true”,代码将使用大约2%的CPU运行 但是,如果我将两个标志都设置为“true”,那么代码将使用28%的CPU运行 我无法理解这种奇怪行为的原因

我正在做一个项目,需要在两个方向(向前或向后)播放两个录制的视频

使用H.264编码并行录制的两个视频

我用OpenCV3.2.0:/P>编写了C++中非常简单的代码(见下文) 为了控制播放方向,我定义了两个标志(“播放左/后”,“播放右/后

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

如果我只将其中一个标志设置为“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;
}
#包括“opencv2/imgproc/imgproc.hpp”
#包括“opencv2/highgui/highgui.hpp”
int main(){
bool play\u left\u backward=真;
bool play\u right\u backward=true;
cv::垫架左;
cv::右垫框架;
cv::视频捕获cap_left(“D:\\record_left.avi”);
cv::视频捕获cap_right(“D:\\record_right.avi”);
//帧数
int N=(int)cap_left.get(7);
对于(int i=0;i>左框;
盖右>>框右;
cv::imshow(“左帧”,左帧);
cv::imshow(“右框”,右框);
char c=(char)cv::waitKey(30);
如果(c==27){
打破
}
}
返回0;
}

谢谢

您是如何获得此基准的?使用操作系统报告的值来对您的应用进行基准测试充其量是不确定的。如果向前播放,是否有可能使用GPU解码,而向后播放时使用CPU解码?(获取一些显示GPU使用情况的工具并检查)