stixel-world和psmnet结合出现的问题
float32位,4字节
原本的stixel-world是用sgbm生成深度图,并且转成了float型
psmnet保存最终的disparity图是保存成uint16的,skimage.io.imsave(test_left_img[inx].split('/')[-1],(img*256).astype('uint16'))
最开始我采用的是直接保存成图片,cv2.save(save_dir,img),img本身是个一通道的,保存之后是个三通道的,然后在stixel-world读取图片的时候只读一个通道cv::imread(img,-1)就可以读出disparity
直接操作不能得出正确的值,因为图片本身是uchar型,也就是0到255,不能是其他的.这样精确度就只能到整数,原本的float被强制变成了int型
我想要保存原本的float型,opencv可以使用xml保存这些值,imwrite无法实现
因为PSMnet的代码是python的,也可以将这些值保存为.npy格式的文件,但stixel-world是c++的,读取是mat,这样就不好操作,有一些开源项目能进行这种转换,但太麻烦
最终我选择了将img直接保存成txt格式,stixel-world把这些txt读取到mat中
numpy保存成txt有个专门的函数是savetxt,我这样使用:np.savetxt(save_dir,img,fmt="%f",delimiter=",")
从txt可以看出值的差别不是特别大,所以保存成int就没区别了
之前跑代码会出现有时候没办法跑,有时候能跑,加了cout之后反而能跑
cout能够清理缓存,猜测可能是这个原因
在这段代码之前还用了infile1 open了一个文件,如果使用infile.close就能清理缓存
其实这个跟python的一样,只是with open自己使用了close.以后在使用infile读取的时候,使用完了之后还是要close清理一下,这样能避免很多错误
最新文章
- 在C#中读取枚举值的描述属性
- HDU 3062 &;&; HDU 1824 &;&; POJ 3678 &;&; BZOJ 1997 2-SAT
- Xshell访问虚拟机内Linux
- Unity5网络模块UNet介绍
- HTML5客户端数据存储
- source insight 的使用
- angularjs ios title不能修改的bug的解决方法
- 基于Annotation与SpringAOP的缓存简单解决方案
- Java开发从初级到中级
- Linux的软链接和硬链接
- HTML一
- MapReduce多种join实现实例分析(一)
- 聊聊GarbageCollectionNotificationInfo
- [原]Chef_Server and Chef_WorkStation and Chef_Client Install Guide[by haibo]
- Luogu 1941 【NOIP2014】飞扬的小鸟 (动态规划)
- 关于jQuery中click&;live&;on中的坑
- NIO学习笔记五:Buffer 的使用
- 详解利用Dockerfile构建mysql镜像并实现数据的初始化及权限设置
- PC端,移动端分离,如何结合??
- Flask从入门到精通之Flask表单渲染成HTML