OpenCV-矩阵变形reshape

简介: OpenCV-矩阵变形reshape

函数原型

cv::Mat reshape(int cn, int rows=0) const;


参数说明

    reshape函数有3种重载形态,最常用的是上面所展示的这个原型,所以只介绍这个。

  1. int类型的cn,表示变形后的矩阵的通道数。
  2. int类型的rows,表示变形后的矩阵的行数。
  3. 返回的内容是一个cv::Mat,表示变形后的矩阵。


测试代码

#include<iostream>
#include<fstream>
#include<opencv2/opencv.hpp>
using namespace std;
int main()
{
  cv::Mat pic = cv::Mat::zeros(9, 1, CV_32FC1);
  for (int i = 0; i < pic.rows; i++)
  {
    for (int j = 0; j < pic.cols; j++)
    {
      pic.at<float>(i, j) = rand() % 255;
    }
  }
  // 以下变化后的矩阵行数均为3
  // 第一参数为0时,默认与pic同样的通道数,都是1
  cv::Mat result1 = pic.reshape(0, 3);
  // 第一参数为1时,设置result2的通道数为1
  cv::Mat result2 = pic.reshape(1, 3);
  // 第一参数为3时,设置result2的通道数为3
  cv::Mat result3 = pic.reshape(3, 3);
  // 第一个参数为2时,设置通道数为2,此时行数为3,和9不能整除,看看会发生什么
  //cv::Mat result4 = pic.reshape(2, 3);
  return 0;
}

测试效果

图1 生成矩阵数据

       在result1中,通道数为0就是与pic通道数1一致的意思,所以result1和result2都是图2所示。

图2 变形后矩阵

      result3中,通道数设为3,行数也为3,那么变形后的矩阵就是一个3*1的3通道矩阵,如图3所示。

图3 变形后的三通道矩阵


      若是设置为2通道的3行矩阵,9不能整除6,就会报错;同理,如果设置3通道的3行矩阵,数据量一定是9的倍数才可以。不然就会出现如图4所示的异常中断提示。

图4 异常提示

      这个函数起初我以为是输入行和列,结果后来发现第一个参数是通道数,第二个参数是行数,大意了,所以特此写篇小文章注明下,望后来者避坑。

      如果文章帮助到你了,可以点个赞让我知道,我会很快乐~加油!

相关文章
|
7月前
|
存储 定位技术 计算机视觉
Armadillo与OpenCV矩阵数据mat、vec与Mat的相互转换
Armadillo与OpenCV矩阵数据mat、vec与Mat的相互转换
|
计算机视觉
openCV之单应性矩阵
单应性矩阵
126 1
|
存储 计算机视觉 数据格式
OpenCV库、Armadillo库矩阵数据格式互转的方法
本文介绍在C++语言中,矩阵库Armadillo的mat、vec格式数据与计算机视觉库OpenCV的Mat格式数据相互转换的方法~
138 1
OpenCV库、Armadillo库矩阵数据格式互转的方法
|
计算机视觉
OpenCV-矩阵归一化cv::normalize
OpenCV-矩阵归一化cv::normalize
111 0
|
计算机视觉 索引
三天学会opencv(二)——矩阵的掩膜操作
三天学会opencv(二)——矩阵的掩膜操作
112 0
三天学会opencv(二)——矩阵的掩膜操作
|
存储 API 计算机视觉
OpenCV 矩阵的掩膜操作
OpenCV 矩阵的掩膜操作
160 0
OpenCV 矩阵的掩膜操作
|
存储 计算机视觉
OpenCV矩阵cv::Mat通道和位深的整理(CV_8UC1,CV_32FC1等等)
OpenCV矩阵cv::Mat通道和位深的整理(CV_8UC1,CV_32FC1等等)
1754 0
|
计算机视觉 算法 定位技术
OpenCV 单应矩阵应用:全景图像融合原理
之前的写了好几篇文,什么特征点检测,匹配,RANSAC之类的乱七八糟的,就是为了做这个应用。了解原理之后用NI Vision实现,数图的课程设计算是交差了~~全景图像融合使用到SIFT算子(特征点检测和匹配)、单应矩阵(立体几何)和RANSAC(随机抽样一致性)之类的内容,了解其中的领域和原理还是需要花点时间的。
2126 0
|
计算机视觉
OpenCV 估算图像的投影关系:基础矩阵和RANSAC
根据针孔摄像机模型,我们可以知道,沿着三维点X和相机中心点之间的连线,可以在图像上找到对应的点x。反过来,在三维空间中,与成像平面上的位置x对应的场景点可以位于这条线上的所有位置。
2130 0
下一篇
DataWorks