将数据提取到matlab空间中在之前的文章写了。
https://blog.csdn.net/weixin_42459037/article/details/82756574
红外、深度、RGB成像均以图像序列的形式保存在了bag包里。
所有的图像数据都糅合成了xxx*1的一维数据,因此要做的就是把这一维数据恢复成二维或三维图像数据。
红外图像为灰度图,提取出来比较方便(视频分辨率为1280*720)
m1=select(bag,'Topic','device_0/sensor_0/Infrared_1/image/data');
data_inf=readMessages(m1);
save_path = strcat('D:\code\Realsense\Infrared\');
for i=1:length(data_inf)
tmp=data_inf{i,1};
tmp2=tmp.Data;
tmp2=(reshape(tmp2,1280,720))';
name = num2str(i);
imwrite(tmp2,strcat(save_path,name,'.png'))
end
提取深度图像的时候遇到了一些麻烦
在界面里,深度显示的模式可以自由切换(黑-白,红-蓝等),在包中显示数据是一个mono16的形式。也就是应该是一个一层的uint16数据
然而实际数据点是1280*720的两倍量,并且形式是uint8,按道理应该是要2个为一组转uint16格式或者设计一个方法转化为指定的色彩变化模式以反应深度。
我这里直接舍弃了多余的那一倍数