作为一名图像处理方面的工程师,在面对大数据量的遥感影像时,往往会利用到强大的GDAL库,但是GDAL库却没有方面的算法函数进一步进行处理;同时我们看到Opencv库能提供强大的算法支持,却对大数据影像没有办法,因此两者的结合就显得十分有必要。

以本篇博客为开头,首先利用GDAL进行影像的读取,实现转换成OpenCV库中的Mat格式。

  1. cv::Mat GDAL2Mat(string strName)
  2. {
  3. GDALAllRegister(); // 注册。。。
  4. GDALDataset *poDataset = (GDALDataset *)GDALOpen(strName.c_str(),GA_ReadOnly); //GDAL读取栅格影像
  5. int nCols = poDataset->GetRasterXSize();
  6. int nRows = poDataset->GetRasterYSize();
  7. int nBandSize = poDataset->GetRasterCount();
  8.  
  9. double *padfGeoTransform = new double[];
  10. poDataset->GetGeoTransform(padfGeoTransform);
  11.  
  12. QVector <cv::Mat> imgMat; // 每个波段
  13. float *pafScan = new float[nCols*nRows]; // 存储数据
  14.  
  15. for(int i = ;i< nBandSize;i++) //按波段转换存储
  16. {
  17. GDALRasterBand *pBand = poDataset->GetRasterBand(i+);
  18. //pafScan = new float[tmpCols*tmpRows];
  19. pBand->RasterIO(GF_Read,,,tmpCols,tmpRows,pafScan,
  20. tmpCols,tmpRows,GDT_Float32,,);
  21. cv::Mat img = cv::Mat(nRows,nCols,CV_32FC1,pafScan);
  22. imgMat.push_back(img.clone());
  23. }
  24. delete []pafScan;
  25. pafScan = NULL;
  26.  
  27. cv::Mat imgDst;
  28. imgDst.create(tmpRows,tmpCols,CV_32FC(nBandSize));
  29. cv::merge(imgMat.toStdVector(),imgDst);
  30. imgMat.clear();
  31. GDALClose((GDALDatasetH)poDataset);
  32. return imgDst;
  33. }

参考代码:http://www.cnblogs.com/zyore2013/p/4657702.html  机器学习猪

待扩充....

GDAL联合OpenCV进行图像处理的更多相关文章

  1. 完善GDAL与OpenCV间的数据格式转换与影像分块读写

    本博客为原创内容,未经博主允许禁止转载,商用,谢谢. 一.前言 关于GDAL与openCV间的数据格式转换,在我之前的博客中已有简要说明,这里,由于最近工作上经常用到openCV里的函数进行图像处理, ...

  2. windows平台下基于QT和OpenCV搭建图像处理平台

        在之前的博客中,已经分别比较详细地阐述了"windows平台下基于VS和OpenCV"以及"Linux平台下基于QT和OpenCV"搭建图像处理框架,并 ...

  3. 海康威视摄像头+OpenCV+VS2017 图像处理小结(二)

    海康威视摄像头+OpenCV+VS2017 图像处理小结(二) https://blog.csdn.net/o_ha_yo_yepeng/article/details/79825648 目录 一.海 ...

  4. 【图像处理】使用OpenCV进行图像处理教程(一)

    OpenCV是进行图像处理的工具,也是计算机视觉领域近十几年不断发展和完善的产物.面对这个已基本成熟的开源库知识体系,我们新生代有必要不断地总结.回顾,以新的视角快速融入计算机视觉的奥秘世界. 从这篇 ...

  5. 【图像处理】OpenCV+Python图像处理入门教程(四)几何变换

    这篇随笔介绍使用OpenCV进行图像处理的第四章 几何变换. 4  几何变换 图像的几何变换是指将一幅图像映射到另一幅图像内.有缩放.翻转.仿射变换.透视.重映射等操作. 4.1  缩放 使用cv2. ...

  6. 【图像处理】OpenCV+Python图像处理入门教程(五)阈值处理

    这篇随笔介绍使用OpenCV进行图像处理的第五章 阈值处理. 5  阈值处理 阈值是指像素到达某临界值.阈值处理表示像素到达某临界值后,对该像素点进行操作和处理. 例如:设定一幅图像素阈值为200,则 ...

  7. 【图像处理】OpenCV+Python图像处理入门教程(六)图像平滑处理

    相信很多小伙伴都听过"滤波器"这个词,在通信领域,滤波器能够去除噪声信号等频率成分,然而在我们OpenCV中,"滤波"并不是对频率进行筛选去除,而是实现了图像的 ...

  8. 【图像处理】OpenCV+Python图像处理入门教程(七)图像形态学操作

    图像形态学主要从图像内提取分量信息,该分量信息通常对表达图像的特征具有重要意义.例如,在车牌号码识别中,能够使用形态学计算其重要特征信息,在进行识别时,只需对这些特征信息运算即可.图像形态学在目标视觉 ...

  9. Qt:&OpenCV—Q图像处理基本操作(Code)

    原文链接:http://www.cnblogs.com/emouse/archive/2013/03/31/2991333.html 作者写作一系列:http://www.cnblogs.com/em ...

随机推荐

  1. maven仓库,snapshot快照仓库和release发布仓库的区别

    首先看下snapshot类型 建立一个maven-privider项目,版本定义为1.1-SNAPSHOT 创建一个privider类,写一个hello()方法,并推送maven私有仓库 然后再建立一 ...

  2. java实现二分法查找

    一 前提 使用二分法查找的前提是:有序的数组,没有重复的数据元素.如果没有排序过的,需先排序. 二分法查找时使用场景为:数据量较大时 二 代码 package com.xiao.day01; publ ...

  3. 使用DBLink方式同步远程数据库中含Blob、Clob字段表的问题解决

    在数据库同步中我们经常会用到DBLink方式.DBLink可以将物理上存放于网络的多个数据库在逻辑上当成一个单一的大数据库.开发人员无需关心数据库的网络分布,就能很方便的实现从不同数据库之间读取数据. ...

  4. 1.4 Navicat Mybatis 占坑

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单的 XML ...

  5. IDEA创建maven各种原型项目汇总

    1: internal -> appfuse-basic-jsf (创建一个基于Hibernate,Spring和JSF的Web应用程序的原型) 2: internal -> appfus ...

  6. linux新建用户tab无法补全命令

    查看passwd cat /ect/passwd 发现root用户的shell是/bin/bash 普通用户的shell是/bin/sh 修改普通用户的为/bin/bash即可

  7. Linux安装和配置java

    安装文件:jdk-6u45-linux-x64.bin 1.root用户在/usr/local目录下建立java目录 2.拷贝jdk-6u45-linux-x64.bin到/usr/local/jav ...

  8. Nova 启动虚拟机流程解析

    目录 文章目录 目录 前言 从请求说起 nova-api service 阶段 前言 Nova 启动虚拟机的东西太多,持续更新- 从请求说起 无论是通过 Dashboard 还是 CLI 启动一个虚拟 ...

  9. 阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式

    目前这里能调用是因为,在service的实现类里面,new了一个dao的对象 正常情况下 这里不应该是new一个对象,应该等于null或为空 设置为空侯再运行就会报错 出错的原因是这里为null 需要 ...

  10. 阶段3 1.Mybatis_12.Mybatis注解开发_8 mybatis注解开发使用二级缓存

    执行两次都查询userId为57的数据.测试一级缓存 返回true 新建测试类 ,测试二级缓存 二级缓存的配置 首先是全局配置,不配置其实也是可以的.默认就是开启的.这里为了演示配置上 dao类里面进 ...