OpenCV读取不tif格式的影像时,使用MATLAB辅助解决

在读取影像的DSM数据,其存储的为tif格式,我使用OpenCV通过cv2.imread(data_path,cv2.IMREAD_ANYDEPTH)的方式还是无法读进数据,什么原因?

  1. 路径是否正确
  2. OpenCV是否装好-一些案例测试,有问题,则在命令行里卸载:pip uninsall python-opencv;重装:pip install python-opencv

在保证以上两点完全没问题后,实在没办法后,可借助MATLAB辅助处理吧!

果然,还是MATLAB强大,直接用MATLAB里面的imread函数直接就能读进,相关操作我在另一篇博客里介绍了。

当以TXT文本的格式保存出来后(注意dlmwrite函数中delimiter参数选为‘\t’),然后在Python里利用numpy中loadtxt直接加载路径即可读进含负数的浮点型矩阵,这时数据的格式是float64的,若直接写出,则肉眼无法看出图像细节,其他软件辅助查看也很难定性看图像的内容,所以需要进行数据类型转换,转换成float32,再用numpy里的imwrite函数写出即可。

dsm_list = glob.glob('C:\\Users\\dl\\Desktop\\data_process\\train\\dsm_txt\\'+'x*.txt')
for iname in dsm_list:
    print(iname)
    dsm_img = np.loadtxt(iname)
    dsm_img = dsm_img.astype(np.float32)
    dsm_name = iname[iname.rindex('\\')+1:]
    cv2.imwrite('C:\\Users\\dl\\Desktop\\data_process\\train\\dsm\\'+dsm_name[:-4]+'.tif', dsm_img)

 

你可能感兴趣的:(OpenCV读取不tif格式的影像时,使用MATLAB辅助解决)