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

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

cv::Mat GDAL2Mat(string strName)
{
GDALAllRegister(); // 注册。。。
GDALDataset *poDataset = (GDALDataset *)GDALOpen(strName.c_str(),GA_ReadOnly); //GDAL读取栅格影像
int nCols = poDataset->GetRasterXSize();
int nRows = poDataset->GetRasterYSize();
int nBandSize = poDataset->GetRasterCount(); double *padfGeoTransform = new double[];
poDataset->GetGeoTransform(padfGeoTransform); QVector <cv::Mat> imgMat; // 每个波段
float *pafScan = new float[nCols*nRows]; // 存储数据 for(int i = ;i< nBandSize;i++) //按波段转换存储
{
GDALRasterBand *pBand = poDataset->GetRasterBand(i+);
//pafScan = new float[tmpCols*tmpRows];
pBand->RasterIO(GF_Read,,,tmpCols,tmpRows,pafScan,
tmpCols,tmpRows,GDT_Float32,,);
cv::Mat img = cv::Mat(nRows,nCols,CV_32FC1,pafScan);
imgMat.push_back(img.clone());
}
delete []pafScan;
pafScan = NULL; cv::Mat imgDst;
imgDst.create(tmpRows,tmpCols,CV_32FC(nBandSize));
cv::merge(imgMat.toStdVector(),imgDst);
imgMat.clear();
GDALClose((GDALDatasetH)poDataset);
return imgDst;
}

参考代码: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. Boston House Price with Scikit-Learn

    Boston House Price with Scikit-Learn Data Description >>> from sklearn.datasets import load ...

  2. Java反序列化漏洞从入门到深入(转载)

    前言 学习本系列文章需要的Java基础: 了解Java基础语法及结构(菜鸟教程) 了解Java面向对象编程思想(快速理解请上知乎读故事,深入钻研建议买本<疯狂Java讲义>另外有一个刘意老 ...

  3. Android 夜间模式的实现

    package com.loaderman.daynightdemo; import android.os.Bundle; import android.support.v7.app.AppCompa ...

  4. 代码实现:取一个整数a从右端开始的4~7位

    import java.util.Scanner; //取一个整数a从右端开始的4-7位. public class Test { public static void main(String[] a ...

  5. 【python3】configparser读取ini配置文件

    在应用过程中,发现下面这个问题: cf=configparser.ConfigParser()读取配置文件时,如果数据包含%这们析特殊符号,就会报出上面的错误,使用cf = configparser. ...

  6. Ant Design使用方法

    1.antd官网: https://ant.design/docs/react/introduce-cn 2.React中使用Antd 1.安装antd npm install antd --save ...

  7. Linux服务器重启后IP变掉的处理方式

    工作中有一台服务器为物理机,重启后IP就变掉了,影响到了使用,于是将服务器上的IP配置为静态方式,问题得以解决,具体如下: 1.登陆Linux服务器,cd /etc/sysconfig/network ...

  8. PPT添加节

    如果你要做很多PPT,而又不想把PPT分到很多个文件里,你可以在PPT中添加节(Section).这样你的PPT就像书本一样,一章一章的,非常方便.

  9. Spring Boot 自定义注册 Servlet、Filter、Listener

    前言 在 Spring Boot 中已经移除了 web.xml 文件,如果需要注册添加 Servlet.Filter.Listener 为 Spring Bean,在 Spring Boot 中有两种 ...

  10. JS对象—数组总结(创建、属性、方法)

    JS对象—数组总结(创建.属性.方法) 1.创建字符串 1.1 new Array() var arr1 = new Array(); var arr2 = new Array(6); 数组的长度为6 ...