我正在使用OpenCV库进行一些图像处理,我发现处理图像所需的时间取决于我在图像处理之间让我的线程进入睡眠状态的时间.我测量了程序的几个部分的执行时间,并且我发现函数cv :: remap()似乎执行速度慢两倍,如果我让我的线程睡眠超过一段时间.
下面是显示奇怪行为的最小代码段.我测量执行cv :: remap()函数所花费的时间,然后我将我的威胁发送到sleep_time中设置的毫秒数.
#include <opencv2/imgproc.hpp>
#include <thread>
#include <iostream>
int main(int argc, char **argv) {
cv::Mat src = ... // Init
cv::Mat dst = ... // Init
cv::Mat1f map_x = ... // Init;
cv::Mat1f map_y = ... // Init;
for (int i = 0; i < 5; i++) {
auto t1 = std::chrono::system_clock::now();
cv::remap(src, dst, map_x, map_y, cv::INTER_NEAREST, cv::BORDER_CONSTANT, 0);
auto t2 = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_time = t2 - …Run Code Online (Sandbox Code Playgroud)