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

Drawing and displaying rectangle every 3 seconds in opencv : C++

本文关键字:显示 一个 绘制 C++ opencv 3秒      更新时间:2023-10-16

我想在每个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秒钟绘制一次矩形并显示一次。但事实并非如此。

我哪里错了?

您应该使用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
    }