本文主要参考:
python rasterio库安装具体流程 - 知乎
rasterio的安装和使用_罗罗攀的博客-CSDN博客
rasterio有很多依赖的其他包,所以
需要依次安装如下包:
- pyproj
- Shapely
- GDAL
- Fiona
- geopandas
- rasterio
PS:其中GDAL、Fiona、rasterio三个库不可以用“pip install +库名”直接安装,需要下载.whl文件安装。其他库可按照pip install下载安装。
详细安装方式:
1. pyproj
pip install pyproj
2. Shapely
pip install Shapely
3. GDAL
GDAL下载链接
选择与你的python版本相对应的,最高版本的GDAl
例如我的python=3.8,所以我下载的是
GDAL-3.4.3-cp38-cp38-win_amd64.whl
下载完成后,具体安装方式:
把 GDAL-3.4.3-cp38-cp38-win_amd64.whl 拖到桌面上
在anaconda中打开要安装这个包的虚拟环境
conda activate road_env(环境名)
conda activate road_env(环境名)
cd C:\Users\DELL\Desktop
pip install GDAL-3.4.3-cp38-cp38-win_amd64.whl
图示:
安装成功!
4. Fiona
方式同GDAL,请参考。
Fiona下载链接
5. geopandas
pip install geopandas
6. rasterio
方式同GDAL,请参考。
rasterio下载链接
在import rasterio后,运行代码时,很可能会报错:
把numpy换成最高级的版本即可(可以先卸载再安装)
# 导入包
import rasterio
# 读入.tif文件,file_path是.tif文件的地址
img = rasterio.open(file_path).read()
rasterio读取tif、cv2读取jpg或png的异同:
1. 相同之处
两种方式得到的img,都是数组形式的,差不多。
2. 不同之处
(1)tif格式的图片中还有其他光谱信息,得到的数组数值可能不是0~255之间的,此时需要自己归范化到0~255,或者有些比赛提供的tif图片本来就是0~255的R、G、B三通道数据,这样的话就不用自己处理了。
(2)得到的img.shape不同
rasterio得到的img.shape是 c, h, w
cv2得到的img.shape是h, w, c
可以使用
img = np.array(img, np.float32).transpose(1, 2, 0)
交换通道即可,具体transpose的用法可以自己百度哦
PS:在使用.tif文件跑深度学习代码时,如果通道为RGB三通道,此时.tif文件与我们平时所使用的jpg,.png差不多,可以直接使用opencv(read)、Image(open)等方式,可以不使用rasterio。