我想每个3 Sec绘制和显示矩形

我提出的代码如下:

vector <Rect> ROI;

    for (size_t i = 0; i< ROI.size(); i++)
        {
        rectangle(src, ROI[i].tl(), ROI[i].br(), Scalar(110, 220, 0), 10, 8, 0);
        imshow(source_window, src);

        const std::chrono::duration<int, std::milli>threadSuspendDuration_k(3000);
        std::this_thread::sleep_for(threadSuspendDuration_k);

    }

当我绘制矩形然后在循环之外调用imshow时,它工作正常。

但是,当imshow在for循环中时,我希望每3秒绘制和显示一次矩形。但事实并非如此。

我哪里错了?

最佳答案

您应该使用cv::waitKey进行延迟。

vector <Rect> ROI;

    for (size_t i = 0; i< ROI.size(); i++)
     {
        rectangle(src, ROI[i].tl(), ROI[i].br(), Scalar(110, 220, 0), 10, 8, 0);
        imshow(source_window, src);
        waitKey(3000);//3 seconds delay
    }

关于c++ - 在opencv中每3秒绘制和显示一个矩形:C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40128036/

10-13 06:18