作者:翟天保Steven
版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处

函数原型

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同样的通道数,都是1cv::Mat result1 = pic.reshape(0, 3);// 第一参数为1时,设置result2的通道数为1cv::Mat result2 = pic.reshape(1, 3);// 第一参数为3时,设置result2的通道数为3cv::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 异常提示

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

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

OpenCV-矩阵变形reshape相关推荐

  1. TensorFlow学习笔记(十八)tf.reshape矩阵变形

    tf.reshape(tensor, shape, name=None) 矩阵变形是常用的操作,在Tensorflow中调用方式有多种,例如: 1. tf.reshape tf.reshape(L3, ...

  2. opencv 学习:reshape函数

    在opencv中,reshape函数比较有意思,它既可以改变矩阵的通道数,又可以对矩阵元素进行序列化,非常有用的一个函数. 函数原型: C++: Mat Mat::reshape(int cn, in ...

  3. OpenCV—矩阵数据类型转换cv::convertTo

    OpenCV-矩阵数据类型转换cv::convertTo 函数 [cpp] view plaincopy void convertTo( OutputArray m, int rtype, doubl ...

  4. OpenCV中的reshape

    OpenCV中关于reshape的定义如下: reshape有两个参数: 其中,参数:cn为新的通道数,如果cn = 0,表示通道数不会改变. 参数rows为新的行数,如果rows = 0,表示行数不 ...

  5. OpenCV 矩阵常用操作,比如 addWeighted, flip, hconcat, reduce, merge, norm, repeat, split, sort, mulSpectrum 等

    平时经常会用到一些 C++ OpenCV 矩阵 Mat 常用的函数,每次用到都要到官网去查看,现在特地整理了一下. 下面的函数均来自于 https://docs.opencv.org/master/d ...

  6. Numpy和Opencv中的reshape 和 transpose的区别

    Numpy和Opencv中的reshape 和 transpose的区别 在Numpy和Opencv中,都有两个函数:reshape 和 transpose. 该两个函数都具有改变维度的作用,在使用中 ...

  7. 微信小程序动画(六):矩阵变形

    种一颗树,最好的时机是十年期,而后是现在. The best time to plant a tree was twenty years ago. The second-best time is no ...

  8. opencv 矩阵相乘

    opencv 矩阵乘法 1. dot说明: 2. Mat矩阵mul--A.mul(B) 3. opencv将整数像素图片转化为浮点型 1. dot说明: 1. 对两个向量执行点乘运算,就是对这两个向量 ...

  9. css3transform rotate,CSS3详解:transform [旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix]...

    CSS3详解:transform [旋转rotate.扭曲skew.缩放scale和移动translate以及矩阵变形matrix] transform的属性包括:rotate() / skew() ...

最新文章

  1. 替换ubuntu 源
  2. 安装Ruby、Sass在WebStrom添加Watcher实现编辑scss文件时自动生成.map和压缩后的.css文件...
  3. 单片机c语言位运算写法,单片机与嵌入式系统中C语言的位运算小记
  4. dubbo+rabbitmq+hystrix实现服务的高可用
  5. java 标注 json_java – 注释资源以生成JSON,但在响应头中返回“text/plain”
  6. 计算机管理说文件缺失lnk,Win10系统右键管理打不开提示Windows找不到文件Server manager.lnk如何解决...
  7. python 回调函数的使用_Python回调函数用法实例详解
  8. 面向对象 重写和重载
  9. 魔兽世界插件编写-第一个插件-空插件 EmptyAddOns
  10. 沪深300股指破冰金融期权衍生品市场“基建”再进一步
  11. 1.Cookie和Session
  12. OPPO开放平台移动应用认领
  13. 微信6个新表情衍生职场好戏,『程序员』版也太太太真实了吧……
  14. 附件的文件夹超过了服务器,邮件附件太大发不了 这3种方式了解一下
  15. 首屏加载从11s到1s,详解前端性能优化
  16. Azure机器学习实验
  17. 矩阵论 - 9 - 线性无关、基、维数
  18. 分数指数幂计算机,分数指数幂教案
  19. 活动星投票午间修身自习室制作在线投票投票制作网页
  20. 鸿蒙智联 HarmonyOS Connect 设备首次发现过程

热门文章

  1. Effective_STL 学习笔记(二)小心对 “容器无关代码” 的幻想
  2. python:容器、迭代器、生成器 简单介绍
  3. IDEA中启动tomcat
  4. 【文智背后的奥秘】系列篇——分布式爬虫之WebKit
  5. 令人深思的联系-this关键字(隐藏属性static)
  6. Xcode 清除最近使用纪录
  7. sed,awk,grep学习笔记
  8. SELinux 基础命令
  9. 一起谈.NET技术,asp.net页面中输出变量、Eval数据绑定等总结
  10. 第3章 系统设计和架构设计【扩胸运动,有容乃大】