OpenCV中reshape()函数详解-改变矩阵的通道数,对矩阵元素进行序列化

文章目录

          • 1、函数原型
          • 2、示例
          • 3、结论:

OpenCV中reshape()函数详解-改变矩阵的通道数,对矩阵元素进行序列化

在opencv中reshape函数,既可以改变矩阵的通道数,又可以对矩阵元素进行序列化

1、函数原型
Mat Mat::reshape(int cn, int rows=0
) const参数解释:
cn:通道数,如果设为0,则表示保持通道数不变,否则变为设置的通道数;
rows:矩阵行数,如果设为0,则表示保持原有的行数不变,否则则变为设置的行数;
2、示例

初始化一个矩阵,20行30列1通道

#include <opencv2\opencv.hpp>
#include <iostream>
#include <demo.h>using namespace cv;
using namespace std;int main() {system("chcp 65001");// 初始化一个矩阵,20行30列1通道Mat data = Mat(20, 30, CV_32F);cout << "行数: " << data.rows << endl;cout << "列数: " << data.cols << endl;cout << "通道: " << data.channels() << endl;cout << endl;//(1)通道数不变,将矩阵序列化为1行N列的行向量Mat dstRows = data.reshape(0, 1);cout << "行数: " << dstRows.rows << endl;cout << "列数: " << dstRows.cols << endl;cout << "通道: " << dstRows.channels() << endl;cout << endl;//(2)通道数不变,将矩阵序列化N行1列的列向量/*** 序列成列向量比行向量要麻烦一些,还得去计算出需要多少行,但我们可以先序列成行向量,再转置;* Mat dst = data.reshape(0, 1);      //序列成行向量* Mat dst = data.reshape(0, 1).t();  //序列成列向量*/Mat dstCols = data.reshape(0, data.rows*data.cols);cout << "行数: " << dstCols.rows << endl;cout << "列数: " << dstCols.cols << endl;cout << "通道: " << dstCols.channels() << endl;cout << endl;//(3)通道数由1变为2,行数不变// 注意:从结果可以看出,列数被分出一半,放在第二个通道里去了;如果通道数由1变为3,行数不变,则每通道的列数变为原来的三分之一;需要注意的是,如果行保持不变,改变的通道数一定要能被列数整除,否则会报错Mat dstChannel1 = data.reshape(2, 0);cout << "行数: " << dstChannel1.rows << endl;cout << "列数: " << dstChannel1.cols << endl;cout << "通道: " << dstChannel1.channels() << endl;cout << endl;//(4)通道数由1变为2,行数变为原来的五分之一Mat dstChannel2 = data.reshape(2, data.rows/5);cout << "行数: " << dstChannel2.rows << endl;cout << "列数: " << dstChannel2.cols << endl;cout << "通道: " << dstChannel2.channels() << endl;cout << endl;waitKey();destroyAllWindows();return 0;
}

在这里插入图片描述

3、结论:
  • 由此可见,不管怎么变,都遵循这样一个等式:变化之前的 rows*cols*channels = 变化之后的 rows*cols*channels,我们只能改变通道数和行数,列数不能改变,它是自动变化的,但是需要注意的是,在变化的时候,要考虑到是否整除的情况,如果改变的数值出现不能整除的情况,就会报错;
  • opencv在序列化的时候是行序列化,即从左到右,从上到下;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/27617.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQLServer2022安装(Windows),已验证

二、安装可视化工具SSMS 接下来安装可视化工具SSMS&#xff0c;现在新版本默认都是没有可视化界面&#xff0c;需要单独安装 &#xff08;1&#xff09;地址&#xff1a;下载 SQL Server Management Studio (SSMS) - SQL Server Management Studio (SSMS) | Microsoft Learn…

集合面试题--二叉树,红黑树,散列表

目录 二叉树 二叉搜索树 时间复杂度 总结 红黑树 红黑树特质 复杂度 总结 散列表 散列函数 哈希冲突 散列冲突-链表法&#xff08;拉链&#xff09; 时间复杂度 ​总结 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是…

jenkins发布使用邮件添加审批

首先安装好Email Extension Plugin插件并在 system下配置好邮件 然后配置流水线需要的参数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/418fc89bfa89429783a1eb37d3e4ee26.png#pic_center pipeline如下&#xff1a; def skipRemainingStages false //是否跳过生…

pdf转excel表格怎么做?分享效率超高的方法

PDF是我们在办公中常用的格式&#xff0c;它方便我们保存、查阅和传输文件。有时候我们可能会遇到需要将大量内容的PDF文档转换为Excel表格的情况&#xff0c;这时候一个好用的转换工具就能帮助我们省时高效地完成任务。下面将介绍几款可靠且实用的PDF转换器软件。 一、小圆象P…

如何使用ArcGIS Pro进行洪水淹没分析

伴随Esri将重心越来越多的放在ArcGIS Pro上,以后ArcGIS的使用场景可能会越来越少,所以我们可以提前接触并使用ArcGIS Pro,做好相关准备。这里为大家介绍一下在ArcGIS中常见的操作——洪水淹没分析在ArcGIS Pro中如何实现。 01 加载数据 在菜单栏上点击插入,点击新建地图,…

每天一道大厂SQL题【Day26】脉脉真题实战(二)活跃时长的均值

文章目录 每天一道大厂SQL题【Day26】脉脉真题实战(二)活跃时长的均值每日语录第26题 中级题: 活跃时长的均值1. 需求列表思路分析 答案获取加技术群讨论附表文末SQL小技巧 后记 每天一道大厂SQL题【Day26】脉脉真题实战(二)活跃时长的均值 大家好&#xff0c;我是Maynor。相信…

通过迁移加速计划迁移到亚马逊云科技

公司出于许多不同的原因迁移到云。也许他们需要关闭一个老化的数据中心。或者&#xff0c;他们正在寻找太昂贵或太难在内部构建和维护的新功能。无论出于何种原因&#xff0c;在开始规划迁移之前&#xff0c;他们还有另一个问题需要回答&#xff1a;哪种云服务适合他们的需求&a…

gogs的自定义配置

在 GOGS 下载并安装后&#xff0c;在程序目录下建立一个custom/conf/app.ini的配置文件&#xff0c;内容如下&#xff1a; APP_NAME Gogs # APP名字 RUN_USER git # 启动用户&#xff0c;设置后只能以此账号启动gogs RUN_MODE prod[database] DB_TYPE mysql HOST 1…

.Net Core Restful Api 版本区分第一种

前言&#xff1a;在我们进行Web Api开发时&#xff0c;版本的区分&#xff0c;是必须要考虑的&#xff0c;涉及到我们的版本发布&#xff0c;切换等&#xff0c;如何从旧版本无缝的切换到新版本&#xff1f; 下面&#xff0c;我们通过使用[ApiVersion]特性&#xff0c;实现两个…

(中等)LeetCode146 LRU 缓存 Java

本题有两种实现操作&#xff0c;需要使用到一个哈希表和一个双向链表。在Java语言中&#xff0c;有一种结合了哈希表和双向链表的数据结构&#xff0c;LinkedHashMap import java.util.LinkedHashMap; import java.util.Map;class LRUCache extends LinkedHashMap<Integer,…

Modbus转Profibus网关modbus仪表不连续

远创智控YC-MDPB-001本产品是一种将Profibus和Modbus总线连接的通讯协议转换设s备。符合Modbus协议的设备&#xff08;如&#xff1a;仪表、传感器、扫码枪等&#xff09;可通过本产品和Profibus总线上的主站设备 1, &#xff08;如&#xff1a;西门子S7-300/400&#xff0c;…

OSPF和VLAN综合实验

目录 题目 1.IP地址的规划设计 2.搭建拓扑并进行基础IP配置 3.配置虚拟局域网 1&#xff09;按子网划分要求配置PC1和PC2 检测&#xff1a;输入[SW1]display vlan进行检查 配置路由器R3 检测&#xff1a;用PC1去访问PC2 2&#xff09;配置拓扑中其余路由器的网关以及回…