(转载请注明出处)
我真的不是故意把标题写这么严肃的
这节重点解释SDK里那些看起来比较晦涩的,剩下那些简那些单的、能在chm文档里查到的粗略提一下或者不说废话。
PS:至于我们所关注的获取视频流,SDK给出了两种方式,一种是用PXCSenseManager获取默认设备上的数据。另一种是完全自定义的方法,一步一步地配置并获取更详细更有(加)价(无)值(聊)的数据。为了满(装)足(一)好(手)奇(好)心(B),我们暂时不用SenseManager。
关于怎么用另一种方式获取视频流,个人稍微总结了一下流(套)程(路):
简直蛋疼
来来来,先理解几个SDK中会经常见到的单词,否则你会怀疑你的阅读能力:
Implementation // 装置,这里对应着DCM服务(DCM是深度相机管理器的意思)
Instance // 看得见摸得着的(雾)玩意儿
Capture // 采集,特指信息采集
Device // 设备IO、硬件IO、摄像头IO。。。反正看到Device 就知道这是在控制硬件(激光器、曝光乱七八糟的)
……不说人话。
下面上代码,两大步:枚举设备、枚举视频流。
枚举设备并查看信息:
不说废话,直接上代码:
pxcStatus retStatus;// 函数返回状态
// Realsense会话
PXCSession *Session = PXCSession::CreateInstance();
PXCSession::ImplVersion ver = Session->QueryVersion();
cout << "Realsense SDK 版本 " << ver.major << "." << ver.minor << endl;
cout << "==================================================" << endl;
// 收集信息-----------------------------------------------------------------------------\\
cout << "Checking Cable..." << endl;
cout << "-----------------" << endl;
// 限定为RealSense DCM视频服务
PXCSession::ImplDesc Qtemplat = {};
Qtemplat.group = PXCSession::IMPL_GROUP_SENSOR;// 分组于传感器
Qtemplat.subgroup = PXCSession::IMPL_SUBGROUP_VIDEO_CAPTURE;// 子分组于视频采集
for (size_t DCMidx = 0; ; DCMidx += 1)
{
// 查询可用的DCM服务
PXCSession::ImplDesc Impl;
retStatus = Session->QueryImpl(&Qtemplat, DCMidx, &Impl);
if (retStatus < PXC_STATUS_NO_ERROR)break;
wcout << "Enum_Index[" << DCMidx << "]" << "@" << Impl.friendlyName<< ":" << endl;
// 尝试初始化信息采集
PXCCapture *Capture = NULL;
retStatus = Session->CreateImpl<PXCCapture>(&Impl, &Capture);
if (retStatus<PXC_STATUS_NO_ERROR) continue;
// 输出硬件信息
for (size_t Didx = 0;; Didx += 1)
{
PXCCapture::DeviceInfo dinfo;
retStatus = Capture->QueryDeviceInfo(Didx, &dinfo);
if (retStatus < PXC_STATUS_NO_ERROR) break;
// 硬件名称
wcout << " |___DEVICE[" << Didx << "]" << ":" << dinfo.name<< endl;
// 输出影像串流类型
if (dinfo.streams&PXCCapture::STREAM_TYPE_COLOR)
wprintf_s(L" |___COLOR ----- STREAM\n");
if (dinfo.streams&PXCCapture::STREAM_TYPE_DEPTH)
wprintf_s(L" |___DEPTH ----- STREAM\n");
if (dinfo.streams&PXCCapture::STREAM_TYPE_IR)
wprintf_s(L" |___IRTOF ----- STREAM\n");
if (dinfo.streams&PXCCap

本文介绍了如何使用RealSense SDK枚举DCM下的摄像机和视频流,包括理解SDK中的重要概念如Implementation和Instance,并提供了枚举设备和视频流的代码示例。通过枚举,可以获取设备的详细信息如设备名称、序列号和固件版本等。同时,文章指出RealSense设备虽能模拟摄像头,但不能直接用OpenCV的VideoCapture打开。
最低0.47元/天 解锁文章
11万+





