在opencv中我们经常用到的是1或者3通道的图像,也就是灰度图像或者彩色图像,对于这两个类型的图像来说,在网上可以找到许多有关的操作。由于课程需要,老师叫手工实现图像的傅里叶变换,在这里面就涉及到了2通道矩阵的处理,上网找了下,好像关于这方面的文章比较少,所以写了一篇,免得以后又忘记。
<span style="font-size:12px;">//1.使用构造函数,常见的几个如下:
Mat::Mat(); //default
Mat::Mat(int rows, int cols, int type);
Mat::Mat(Size size, int type);
Mat::Mat(int rows, int cols, int type, const Scalar& s);
Mat::Mat(Size size, int type, const Scalar& s);
Mat::Mat(const Mat& m);
//参数说明:
//int rows:高
//int cols:宽
//int type:参见"Mat类型定义"
//Size size:矩阵尺寸,注意宽和高的顺序:Size(cols, rows)
//const Scalar& s:用于初始化矩阵元素的数值
//const Mat& m:拷贝m的矩阵头给新的Mat对象,但是不复制数据!相当于创建了m的一个引用对象
//例子1:创建100*90的矩阵,矩阵元素为3通道32位浮点型
cv::Mat M(100, 90, CV_32FC3);
//例子2:使用一维或多维数组来初始化矩阵,
double m[3][3] = {
{a, b, c}, {d, e, f}, {g, h, i}};
cv::Mat M = cv::Mat(3, 3, CV_64F, m);
//2.使用create函数:
Mat a = create(10, 9, CV_16U); //创建