在opencv:C ++中每3秒绘制并显示一个矩形

时间:2016-10-19 09:58:20

标签: c++ opencv

我想每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时,即在for循环之外,它可以正常工作。

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

我哪里错了?

1 个答案:

答案 0 :(得分: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
    }