0

我正在尝试实现和运行 OpenCV 示例代码使用 GDAL 读取地理空间栅格文件

对于 DEM 模型,我N37W123.hgt.zip位于 USGS 的 SRTM 文件下载(位于该页面的结果部分)。

但是,DEM 模型未加载到cv::Mat demcv::Mat dem = cv::imread(argv[2], cv::IMREAD_LOAD_GDAL | cv::IMREAD_ANYDEPTH );我得到运行时错误throw std::runtime_error("DEM image type must be CV_16SC1");

1)为什么会这样?

2) 所有 DEM 数据类型均为 16 位有符号整数。可以吗?

3)如何使用GDALDataset::RasterIOGDALRasterBand::ReadBlock直接读取DEM模型块?

4

2 回答 2

0

在构建 opencv 时,您很可能必须在 CMake 中启用/设置 WITH_GDAL 标志为 true。供参考: https ://docs.opencv.org/4.4.0/d4/da8/group__imgcodecs.html#imread

于 2020-10-26T07:15:50.507 回答
0

gdal很可能需要 HGT 文件,而不是 ZIP 文件:http ://www.gdal.org/formats_list.html 。

在 Python 中,您将首先使用zipfile模块提取存档,然后您可以将文件直接访问到numpy数组中:

from osgeo import gdal
ds = gdal.Open(filename)
data = ds.ReadAsArray()

编辑:您在评论中指出您正在使用 C++,因此请参阅教程以直接阅读图像:http ://www.gdal.org/gdal_tutorial.html

于 2016-07-12T13:31:45.207 回答