代码之家  ›  专栏  ›  技术社区  ›  H.Gheisari

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

  •  2
  • H.Gheisari  · 技术社区  · 10 年前

    正如你所知,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 回复  |  直到 10 年前
        1
  •  2
  •   Mohsen    7 年前

    对于读取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

        2
  •  0
  •   JhonChin    8 年前

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

    OpenCV的代码库被移到了github,我找不到这个问题,但在github中我发现了一些相关的问题 here .