我正在研究需要在两个方向(向前或向后)播放两个录制的视频的项目。
两个视频均使用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;
}
谢谢