一、前言
经过两个星期的努力,一边学习,一边写代码,初步完成了毕业论文系统的界面和一些基本功能,主要包括:1 数据的读写和显示,及相关的基本操作(放大、缩小和移动);2 样本数据的选择;3 数据归一化处理;4 绘制光谱曲线;5 获取波段信息。接下来的工作主要是完成遥感影像分类的相关算法。这部分主要是数学计算,尤其是矩阵的相关运算和操作。为此,系统的学习和了解了openCV库中常用的矩阵操作函数,记录下来,方便以后查阅。
二、openCV函数
1 reshape
1 C++: Mat Mat::reshape(int cn, int rows=0) const
官方解释:能够改变二维数组的通道和形式,并且并不拷贝数据(只是创建矩阵的信息头)。
参数:int cn : 变换后通道数(0表示保持原通道数);
int rows : 变换后行数(0表示行数不变),列数更具以上两个参数自动确定。
对于遥感影像来说,我们常常将通道数据(波段数据)作为特征用作后续数据的处理,为此,我们总希望将通道数变为行或列数,对此我们可以使用如下的方法:
1 int main(int argc, char *argv[])2 {3 QCoreApplication a(argc, argv);4
5 cv::Mat img = cv::imread("F:\\paperSystem\\openCV\\2.tif");6 cv::Mat tmpB;7 tmpB = img.reshape(1,img.rows*img.cols); //将通道数变成列数,