Intel Realsense D435 奇怪的现象记录:帧卡住,但wait_for_frame()不报错

如图,一号四号摄像头视频流显示卡住了,但流传输并未停止,使用目标检测发现,摄像头每次传过来的都是同样的一帧;

但也有可能是加了这句,导致空帧被跳过了:

if not locals()['aligned_depth_frame' + serial] or not locals()['color_frame' + serial]:
	continue

如果是这样,那么到底是什么问题导致wait_for_frames()收到的都是空帧呢??
在这里插入图片描述

后来,我把这句注释了,发现帧还是卡住:
在这里插入图片描述
就是说wait_for_frames()每次传来都是相同的帧,或者根本没把帧变量locals()['frames' + serial]更新

std::condition_variable.wait_for()是C++中std::condition_variable类的一个成员函数,用于在指定时间内等待条件变量满足特定条件。它的语法如下: ```cpp template< class Rep, class Period > std::cv_status wait_for( std::unique_lock<std::mutex>& lock, const std::chrono::duration<Rep, Period>& timeout_duration ); ``` 其中,`lock`是一个std::unique_lock<std::mutex>对象,用于保护条件变量。`timeout_duration`是一个std::chrono::duration对象,表示等待的时间段。 当调用std::condition_variable.wait_for()时,当前线程会被阻塞,直到以下情况之一发生: 1. 条件变量满足特定条件; 2. 等待时间超过了指定的时间段。 如果等待时间超过了指定的时间段,std::condition_variable.wait_for()会返回std::cv_status::timeout,表示等待超时。 以下是一个使用std::condition_variable.wait_for()的示例代码: ```cpp #include <iostream> #include <thread> #include <condition_variable> std::condition_variable cv; std::mutex mtx; bool ready = false; void worker() { std::this_thread::sleep_for(std::chrono::seconds(2)); std::unique_lock<std::mutex> lock(mtx); ready = true; cv.notify_one(); } int main() { std::cout << "Main thread starts." << std::endl; std::thread t(worker); std::unique_lock<std::mutex> lock(mtx); if (cv.wait_for(lock, std::chrono::seconds(1)) == std::cv_status::timeout) { std::cout << "Timeout occurred." << std::endl; } else { std::cout << "Condition variable is notified." << std::endl; } t.join(); std::cout << "Main thread ends." << std::endl; return 0; } ``` 在上面的示例中,主线程等待1秒钟,如果在1秒钟内没有收到通知,则输出"Timeout occurred.";如果在1秒钟内收到了通知,则输出"Condition variable is notified."。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dontla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值