如何在 c++ 中延迟?
How to delay in c++?
我正在开发一个依赖于四个ARuco标记的康复应用程序,我需要绘制运动序列中的四个标记,即物体出现在第一个标记上,当患者的手到达物体时,它会移动到下一个标记,等等......我可以通过选择其标记 ID 来绘制第一个标记,现在我需要延迟绘制下一个标记,这是代码:
std::vector<int> ids;
std::vector<std::vector<cv::Point2f> > corners;
cv::aruco::detectMarkers(image, marker_dict, corners, ids);
// Draw markers using opencv tool
cv::aruco::drawDetectedMarkers(mid, corners, ids);
// Draw markers custom
for (size_t i = 0; i < corners.size(); ++i)
{
// Convert to integer ponits
int num = static_cast<int>(corners[i].size());
std::vector<cv::Point> points;
for (size_t j = 0; j < corners[i].size(); ++j)
points.push_back(cv::Point(static_cast<int>(corners[i][j].x), static_cast<int>(corners[i][j].y)));
const cv::Point* pts = &(points[0]);
// Draw
if (ids.at(i) == 45) {
cv::fillPoly(right, &pts, &num, 1, cv::Scalar(255, 0, 0));
}
使用 std::chrono 库来测量经过的时间,当您所需的延迟过去时,在那个时间执行您想要的代码。
下面是一个使用 while 循环的简单示例,该循环检查是否已经过去了 100 毫秒
#include <windows.h>
#include <iostream>
#include <chrono>
int main()
{
using Clock = std::chrono::steady_clock;
std::chrono::time_point<std::chrono::steady_clock> start, now;
std::chrono::milliseconds duration;
start = Clock::now();
while (true)
{
now = Clock::now();
duration = std::chrono::duration_cast<std::chrono::milliseconds>(now - start);
if (duration.count() >= 100)
{
//do stuff every 100 milliseconds
start = Clock::now();
}
}
return 0;
}
也不需要睡觉。
您可以使用标题 chromo 和 thread。 在函数之后,你可以把 sleep((;括号中带有秒数的任何位置。您可以使用小数和整数。
#include <iostream>
#include <chromo>
#include <thread>
void sleep(float seconds){
clock_t startClock = clock();
float secondsAhead = seconds * CLOCKS_PER_SEC;
// do nothing until the elapsed time has passed.
while(clock() < startClock+secondsAhead);
return;
}
int main(){
sleep(2);
cout << "Hello " << endl;
sleep(2.5);
cout << "World!" << endl;
return 0;
}
相关文章:
- 如何仅为一个函数添加延迟
- 以在Qt中的IF语句中设置时间延迟
- 模板化类中静态成员的延迟初始化
- 在 Windows 8/10 技术中完全实时的屏幕捕获,没有延迟
- 将自定义函数传递到基抽象类中以延迟执行
- 我希望改进或要求我目前的延迟/睡眠方法。C++
- 如何在 c++ 中延迟?
- 如何测量管道延迟?
- 获取毫秒延迟的错误值
- C++异常被捕获延迟,可能导致这种情况的原因是什么?
- 我的子类的属性是延迟初始化的
- 为什么有些延迟加载 DLL 会立即使用 FFMPEG 卸载?
- 代码战士的延迟
- 为什么当通过 TCP 发送的消息速率增加时,请求-响应消息对的延迟会降低?
- C++延迟后的优化器调用函数
- 将作业传递给另一个函数,而不会延迟 arduino
- 延迟 _getch() 输入
- 为什么添加延迟会提高此多线程环境中的数据吞吐量?
- 如何延迟生成已完成的项目序列并对其进行迭代
- 呼叫 QSound,它们之间有延迟 Qt C++