您的位置:首页 > 文旅 > 旅游 > 深圳宣传片制作企业_免费行情网站app页面_app推广方案范例_今日要闻 最新热点

深圳宣传片制作企业_免费行情网站app页面_app推广方案范例_今日要闻 最新热点

2025/5/13 22:51:28 来源:https://blog.csdn.net/jndingxin/article/details/142627384  浏览:    关键词:深圳宣传片制作企业_免费行情网站app页面_app推广方案范例_今日要闻 最新热点
深圳宣传片制作企业_免费行情网站app页面_app推广方案范例_今日要闻 最新热点
  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

等待来自 VideoCapture 的可用帧。
cv::VideoCapture::waitAny 是一个静态成员函数,用于等待多个视频流中的任意一个变为可用状态。这个函数可以用于同步多个视频流,直到其中一个流准备好为止。

异常
在流错误时抛出异常(检查 .isOpened() 以过滤掉格式错误的流)或不支持 VideoCapture 类型
该函数的主要用途是在多摄像头环境中。该方法填充准备状态向量,并在摄像头准备好时抓取视频帧。

在此次调用之后,使用 VideoCapture::retrieve() 来解码并获取帧数据。

函数原型


static bool cv::VideoCapture::waitAny
(const std::vector< VideoCapture > & 	streams,std::vector< int > & 	readyIndex,int64 	timeoutNs = 0 
)

参数

  • 参数streams (const std::vectorcv::VideoCapture&):
    • 描述:一个包含多个 VideoCapture 对象的向量,这些对象代表不同的视频流。
    • 作用:用于指定等待的视频流集合。
  • 参数readyIndex (std::vector&):
    • 描述:一个整型向量的引用,用于返回准备好的视频流的索引。
    • 作用:函数结束后,此向量将包含一个或多个索引,指示哪些视频流已经准备好。
  • 参数timeoutNs (int64):
    • 描述:超时时间(纳秒),指定等待的时间上限。
    • 默认值:0 表示无限期等待。
    • 作用:如果在指定时间内没有视频流准备好,则函数返回 false。

返回值

bool:
描述:如果至少有一个视频流准备好,则返回 true;否则,如果超时或没有视频流准备好,则返回 false。

代码示例


#include <chrono>
#include <iostream>
#include <opencv2/opencv.hpp>
#include <vector>int main()
{// 创建多个 VideoCapture 对象std::vector< cv::VideoCapture > streams;streams.push_back( cv::VideoCapture( 0 ) );  // 第一个摄像头设备streams.push_back( cv::VideoCapture( 2 ) );  // 第二个摄像头设备// 可以添加更多摄像头设备// 用于存储准备好的视频流索引std::vector< int > readyIndex;// 设置异常处理模式为抛出异常for ( auto& stream : streams ){stream.setExceptionMode( true );}// 设置超时时间为 5 秒int64 timeoutNs = 5 * 1000 * 1000 * 1000;  // 5 秒// 等待任意一个视频流准备好bool result = cv::VideoCapture::waitAny( streams, readyIndex, timeoutNs );if ( result ){std::cout << "Ready streams indices: ";for ( int index : readyIndex ){std::cout << index << " ";}std::cout << std::endl;}else{std::cout << "No stream became ready within the timeout." << std::endl;}// 关闭所有 VideoCapture 对象for ( auto& stream : streams ){if ( stream.isOpened() ){stream.release();}}return 0;
}

运行结果

Ready streams indices: 0 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com