c++ - OpenCV - 回放 CPU 使用率
问题描述
我正在研究需要在两个方向(向前或向后)播放两个录制的视频的项目。
两个视频均使用 H.264 编码并行录制。
我使用 OpenCV 3.2.0 在 C++ 中编写了一个非常简单的代码(见下文):
为了控制播放方向,我定义了两个标志(“ play_left_backward ”、“ play_right_backward ” )
如果我将两个标志都设置为“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;
}
谢谢
解决方案
推荐阅读
- salesforce - 当 LWC JS 中超过最大字符限制时,有没有办法在 Lightning 输入富文本字段中更改字体颜色?
- cookies - 如何根据同意 cookie 在 Nuxt 中控制 Google Analytics 跟踪?
- rxdb - 可以从现有的 graphql 模式生成 RxDB 模式吗?
- java - Java函数在打印时自身相乘?
- c - 多行 C 宏中使用的转义字符“\”有什么意义?
- .net - Redis 订阅真实性和重试
- java - 原始类型的扩大和缩小问题
- http - WebSocket-Sharp 不响应公共 IP 地址
- typescript - 具有固定参数但推断返回类型的 TypeScript 函数类型
- python - 有没有办法使用矢量化来代替这个嵌套的 for 循环?