如何在 OpenCV 3.0 中使用 GDAL 打开 ECW 文件

How to open ECW file with GDAL in OpenCV 3.0

如您所知,GDAL 已添加到 OpenCV 第 3 版中。我有一张 ecw 卫星图像,想读取并显示它。我已经尝试使用名为:gdal-image.cpp 的 OpenCV 示例。它有一行用于读取输入图像:

  cv::Mat image = cv::imread(argv[1], cv::IMREAD_LOAD_GDAL | cv::IMREAD_COLOR );

我的问题:我将我的 ecw 图像设置为 argv[1],但它不起作用。 我应该先转换图像吗? 有什么方法可以使用 GDAL 阅读 ecw 吗?

使用GDAL读取ECW文件,gdal中应该内置了它的驱动,也许你应该在opencv中测试支持的驱动。如果作者没有添加ecw驱动,那就自己做吧。这是 OpenCV 中关于 gdal 的页面:http://code.opencv.org/issues/3725

OpenCV 的代码存储库已移至 github,我找不到此问题,但在 github 中我找到了相关的内容 here.

对于读取 ecw 图像,我建议你使用 GDAL,你可以从这里下载 GDAL 二进制预构建和 ECW 扩展 https://www.gisinternals.com/release.php

要读取图像的第一波段,您可以使用此代码:

GDALDataset* dataset = (GDALDataset*) GDALOpenEx("image.ecw", GDAL_OF_RASTER, NULL, NULL, NULL);
GDALRasterBand* band = dataset->GetRasterBand(1);

cv::Rect roi(x, y, w, h);

cv::Mat mat;
mat.create(roi.size(),CV_32F);
band->RasterIO( GF_Read, roi.x, roi.y, roi.width, roi.height, mat.data,
                roi.width, roi.height, GDT_Float32, 0, 0);

您只需确保 OpenCV 数据类型与 GDAL 数据类型匹配,并且 ROI 尺寸适合光栅大小。 有关更多信息,这很好:enter link description here