OpenCV 3.0 使用GDAL例程

 OpenCV3.0 使用GDAL例程

OpenCV3.0 开始逐步加入对GDAL的支持,为了进一步学习,先尝试了下OpenCV3.0库里提供的一个例子。

源码我不在贴出来了,大家到这里看就好。

 

程序的输入为一张影像图和一张DEM图。在读入图像时,要想例程中一样,在imread()函数中加入flag标签,表明我们要使用GDAL取读取影响。

两个数据读取函数如下:

cv::Mat image = cv::imread("in.jpg", cv::IMREAD_LOAD_GDAL | cv::IMREAD_COLOR );
cv::Mat dem = cv::imread("N37W1231.tif", cv::IMREAD_LOAD_GDAL| cv::IMREAD_ANYDEPTH);

其他主要函数:

1、

cv::Point2d pixel2world( const int& x, const int& y, const cv::Size& size )

该函数完成了由影像图的像素坐标到世界坐标的转换,利用的是双线性插值算法。

2、

cv::Point2d world2dem( cv::Point2d const& coordinate, const cv::Size& dem_size)

该函数完成了由世界坐标向DEM中像素坐标系的转换。

1,2两个函数建立起来影像中像素坐标与DEM中像素坐标的联系。

其余的函数就是完成了一个颜色映射表,依据高程信息,分级填充输出像素的BGR值。

 

 

调试这个代码时,有以下两点要注意:

1、DEM数据N37W123.hgt,不能用imread()函数直接读取。需要你使用ArcGIS或ENVI等软件转换为*.tif格式数据才能读取。

2、 if( dem.type() != CV_16SC1 ){throw std::runtime_error("DEM image type must be CV_16SC1"); }

我读取的GIF文件,不满足此if判断,为了程序运行采用了简单粗暴的方法,直接删除了这条if判断。

为方便大家学习,影像和DEM数据大家可以到这里下载,已经转成了tiff格式。

http://pan.baidu.com/s/1pJNqxy7

输入的影像数据:


输入的DEM数据(截图):


实验结果图:





  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值