如您所知,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?
答案 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相关的内容。