Qt使用RealSense SDK进行开发

Qt使用RealSense SDK进行开发

1.介绍

之前在线安装好RealSense SDK后使用官方自带的程序realsense-viewer进行查看时,感觉不错,就想着用Qt+RealSense开发下试试,结果编译时出现错误:

Error:

/usr/local/include/librealsense2/hpp/rs_frame.hpp:876: error: macro "Q_FOREACH" passed 3 arguments, but takes just … });

问题原因:
原来是foreach 定义冲突,foreach并不属于C++标准语法,QTRealSense分别定义了foreach,导致发生冲突。

RealSense部分源码:

...
frame first_or_default(rs2_stream s) const
{
frame result;
foreach([&result, s](frame f) {
if (!result && f.get_profile().stream_type() == s)
{
result = std::move(f);
}
});
return result;
}
...

解决办法:

由于需要修改RealSense源码,而之前是通过在线安装的RealSense SDK,故无法修改RealSense源码,所以需要改为通过源码安装RealSense SDK,然后再修改其源码
关于通过源码安装RealSense SDK可参考这里

  • 打开下载好的RealSense源码文件夹,找到librealsense-master/include/librealsense2/hpp/rs_frame.hpp文件,将该文件的类frameset中的所有foreach改一个名字,如foreach_rs(应该有5个分别在946/1006/1028/1050/1072行)
  • 接下来重新编译librealsense源码,生成库文件
  • 编译会出现错误,还需要将源文件 librealsense-master/src/proc/align.cpp synthethic-stream.cpp zero-order.cpp …中使用foreach的地方修改为foreach_rs后,再重新编译(对应于RealSense_SDK-V2.22.0,不同的版本可能需要修改地方会有所不同)

编译步骤:
进入librealsense的目录路径下,执行以下指令:

mkdir build && cd build

cmake …/ -DBUILD_EXAMPLES=true

sudo make uninstall && make clean && make && sudo make install

一般头文件安装在/usr/local/include
库文件安装在/usr/local/lib

2.使用
需要在pro文件中添加RealSense头文件和库文件,然后再进行相应开发

#use realsense sdk2.0
INCLUDEPATH += /usr/local/include/librealsense2

LIBS += -L/usr/loacl/lib \
-lrealsense2

下图是使用Qt+RealSense做的显示界面

Qt使用RealSense库




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值