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

时间:2016-01-07 15:49:52

标签: c++ opencv gdal

如您所知,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?

2 个答案:

答案 0 :(得分:2)

对于读取ecw映像,我建议您使用GDAL,您可以从此处https://www.gisinternals.com/release.php下载GDAL二进制预构建和ECW扩展名。

要读取第一段图像,可以使用以下代码:

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

答案 1 :(得分:0)

要使用GDAL读取ECW文件,应将其驱动程序内置到gdal中,也许您应该在opencv中测试支持的驱动程序。如果作者没有添加ecw驱动程序,那么自己动手吧。这是关于OpenCV中gdal的页面:http://code.opencv.org/issues/3725

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