cv::Mat类的矩阵内容输出的各种格式的例子

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

功能描述

我们可以这样使用:cv::Mat M(…); cout << M;,直接将矩阵内容输出到控制台。
输出格式支持多种风格,包括OpenCV的原生格式、MATLAB风格、Python风格、NumPy风格、CSV格式以及C语言风格等。

用到的函数

Mat::eye

cv::Mat::eye 是一个静态方法,用于创建一个单位矩阵(对角线上的元素为1,其余位置为0)的 cv::Mat 对象。这个方法使得初始化一个单位矩阵变得简单快捷。

原型
cv::Mat eye(int rows, int cols, int type = CV_64F);
参数
  • rows:指定创建矩阵的行数。
  • cols:指定创建矩阵的列数。
  • type:可选参数,指定了矩阵的数据类型,默认为 CV_64F,即64位浮点型。你可以根据需要选择其他类型,如 CV_8U 表示无符号8位整型,CV_32F 表示32位浮点型等。
示例
cv::Mat identityMatrix = cv::Mat::eye(3, 3, CV_32F);

这段代码将创建一个3x3的浮点型单位矩阵。

函数Mat::Mat( int rows, int cols, int type )

使用 cv::Mat 的构造函数来初始化一个矩阵

原型
cv::Mat::Mat(int rows, int cols, int type);
参数
  • int rows: 指定矩阵的行数。这是一个整数值,表示矩阵的高度。
  • int cols: 指定矩阵的列数。同样是一个整数值,表示矩阵的宽度。
  • int type: 确定矩阵中元素的数据类型以及(对于多通道数组而言)通道数。这个参数是关键,因为它定义了矩阵中每个元素是如何存储的。类型编码遵循OpenCV的类型系统,常见的类型有:
    CV_8U: 无符号8位整数(uchar,0-255)
    CV_8S: 有符号8位整数(char,-128到127)
    CV_16U: 无符号16位整数
    CV_16S: 有符号16位整数
    CV_32S: 有符号32位整数
    CV_32F: 32位浮点数(float)
    CV_64F: 64位双精度浮点数(double)
    对于多通道数组(如RGB图像),在上述类型后面加上"Cn",其中n表示通道数。例如,CV_8UC3 表示无符号8位,3通道(常用作BGR图像)。因此,type 参数不仅指定了数据类型,还隐含了数组是否为多通道以及通道数。

randu函数

生成单个均匀分布的随机数或随机数数组。

此非模板函数变体将矩阵dst填充来自指定范围的均匀分布随机数:

low c ≤ dst ( I ) c < high c \texttt{low} _c \leq \texttt{dst} (I)_c < \texttt{high} _c lowcdst(I)c<highc

参数

-参数 dst 输出随机数数组;该数组必须预先分配.
-参数 low 生成随机数的包含下限.
-参数 high 生成随机数的不包含上限.

代码示例

/***该程序演示了cv::Mat类的串行输出功能,*也就是说,你现在可以这样使用:cv::Mat M(...); cout << M;,直接将矩阵内容输出到控制台。*输出格式支持多种风格,包括OpenCV的原生格式、MATLAB风格、Python风格、NumPy风格、CSV格式以及C语言风格等。**/#include "opencv2/core.hpp"
#include <iostream>
using namespace std;
using namespace cv;int main( int argc, char** argv )
{Mat I                  = Mat::eye( 4, 4, CV_64F );I.at< double >( 1, 1 ) = CV_PI;cout << "I = \n" << I << ";" << endl << endl;Mat r = Mat( 10, 3, CV_8UC3 );randu( r, Scalar::all( 0 ), Scalar::all( 255 ) );cout << "r (默认风格) = \n" << r << ";" << endl << endl;cout << "r (matlab风格) = \n" << format( r, Formatter::FMT_MATLAB ) << ";" << endl << endl;cout << "r (python风格) = \n" << format( r, Formatter::FMT_PYTHON ) << ";" << endl << endl;cout << "r (numpy风格) = \n" << format( r, Formatter::FMT_NUMPY ) << ";" << endl << endl;cout << "r (csv风格) = \n" << format( r, Formatter::FMT_CSV ) << ";" << endl << endl;cout << "r (c风格) = \n" << format( r, Formatter::FMT_C ) << ";" << endl << endl;Point2f p( 5, 1 );cout << "p = " << p << ";" << endl;Point3f p3f( 2, 6, 7 );cout << "p3f = " << p3f << ";" << endl;vector< float > v;v.push_back( 1 );v.push_back( 2 );v.push_back( 3 );cout << "shortvec = " << Mat( v ) << endl;vector< Point2f > points( 20 );for ( size_t i = 0; i < points.size(); ++i )points[ i ] = Point2f( ( float )( i * 5 ), ( float )( i % 7 ) );cout << "points = " << points << ";" << endl;return 0;
}

运行结果

I = 
[1, 0, 0, 0;0, 3.141592653589793, 0, 0;0, 0, 1, 0;0, 0, 0, 1];r (默认风格) = 
[ 91,   2,  79, 179,  52, 205, 236,   8, 181;239,  26, 248, 207, 218,  45, 183, 158, 101;102,  18, 118,  68, 210, 139, 198, 207, 211;181, 162, 197, 191, 196,  40,   7, 243, 230;45,   6,  48, 173, 242, 125, 175,  90,  63;90,  22, 112, 221, 167, 224, 113, 208, 123;214,  35, 229,   6, 143, 138,  98,  81, 118;187, 167, 140, 218, 178,  23,  43, 133, 154;150,  76, 101,   8,  38, 238,  84,  47,   7;117, 246, 163, 237,  69, 129,  60, 101,  41];r (matlab风格) = 
(:, :, 1) = 91, 179, 236;
239, 207, 183;
102,  68, 198;
181, 191,   7;45, 173, 175;90, 221, 113;
214,   6,  98;
187, 218,  43;
150,   8,  84;
117, 237,  60
(:, :, 2) = 2,  52,   8;26, 218, 158;18, 210, 207;
162, 196, 243;6, 242,  90;22, 167, 208;35, 143,  81;
167, 178, 133;76,  38,  47;
246,  69, 101
(:, :, 3) = 79, 205, 181;
248,  45, 101;
118, 139, 211;
197,  40, 230;48, 125,  63;
112, 224, 123;
229, 138, 118;
140,  23, 154;
101, 238,   7;
163, 129,  41;r (python风格) = 
[[[ 91,   2,  79], [179,  52, 205], [236,   8, 181]],[[239,  26, 248], [207, 218,  45], [183, 158, 101]],[[102,  18, 118], [ 68, 210, 139], [198, 207, 211]],[[181, 162, 197], [191, 196,  40], [  7, 243, 230]],[[ 45,   6,  48], [173, 242, 125], [175,  90,  63]],[[ 90,  22, 112], [221, 167, 224], [113, 208, 123]],[[214,  35, 229], [  6, 143, 138], [ 98,  81, 118]],[[187, 167, 140], [218, 178,  23], [ 43, 133, 154]],[[150,  76, 101], [  8,  38, 238], [ 84,  47,   7]],[[117, 246, 163], [237,  69, 129], [ 60, 101,  41]]];r (numpy风格) = 
array([[[ 91,   2,  79], [179,  52, 205], [236,   8, 181]],[[239,  26, 248], [207, 218,  45], [183, 158, 101]],[[102,  18, 118], [ 68, 210, 139], [198, 207, 211]],[[181, 162, 197], [191, 196,  40], [  7, 243, 230]],[[ 45,   6,  48], [173, 242, 125], [175,  90,  63]],[[ 90,  22, 112], [221, 167, 224], [113, 208, 123]],[[214,  35, 229], [  6, 143, 138], [ 98,  81, 118]],[[187, 167, 140], [218, 178,  23], [ 43, 133, 154]],[[150,  76, 101], [  8,  38, 238], [ 84,  47,   7]],[[117, 246, 163], [237,  69, 129], [ 60, 101,  41]]], dtype='uint8');r (csv风格) = 91,   2,  79, 179,  52, 205, 236,   8, 181
239,  26, 248, 207, 218,  45, 183, 158, 101
102,  18, 118,  68, 210, 139, 198, 207, 211
181, 162, 197, 191, 196,  40,   7, 243, 23045,   6,  48, 173, 242, 125, 175,  90,  6390,  22, 112, 221, 167, 224, 113, 208, 123
214,  35, 229,   6, 143, 138,  98,  81, 118
187, 167, 140, 218, 178,  23,  43, 133, 154
150,  76, 101,   8,  38, 238,  84,  47,   7
117, 246, 163, 237,  69, 129,  60, 101,  41
;r (c风格) = 
{ 91,   2,  79, 179,  52, 205, 236,   8, 181,239,  26, 248, 207, 218,  45, 183, 158, 101,102,  18, 118,  68, 210, 139, 198, 207, 211,181, 162, 197, 191, 196,  40,   7, 243, 230,45,   6,  48, 173, 242, 125, 175,  90,  63,90,  22, 112, 221, 167, 224, 113, 208, 123,214,  35, 229,   6, 143, 138,  98,  81, 118,187, 167, 140, 218, 178,  23,  43, 133, 154,150,  76, 101,   8,  38, 238,  84,  47,   7,117, 246, 163, 237,  69, 129,  60, 101,  41};p = [5, 1];
p3f = [2, 6, 7];
shortvec = [1;2;3]
points = [0, 0;5, 1;10, 2;15, 3;20, 4;25, 5;30, 6;35, 0;40, 1;45, 2;50, 3;55, 4;60, 5;65, 6;70, 0;75, 1;80, 2;85, 3;90, 4;95, 5];

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

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

相关文章

第5章:Electron加载与显示内容(2)

5.4 加载和显示不同类型的资源 Electron 支持加载和显示多种类型的资源&#xff0c;包括图片、视频和其他静态文件。 5.4.1 加载图片的示例代码 index.html&#xff1a; <!DOCTYPE html> <html> <head><title>Load Image</title> </head&…

字符串常量池StringTable

String s1 "a"; 从常量池中取符号a->运行时常量池 ->"a"放入字符串常量池 -> 给s1 String s2 "b"; String s3 s1s2; 创建 new StringBuilder().append("a").append("b").toString() String s4 "a"&q…

鸿蒙使用 @Builder扩展出来的布局数据更新没法更新UI

由于业务的复杂&#xff0c;所以我们把相关UI抽离出来。但是数据变化了&#xff0c;没法更新UI Builder MyGridLayout() { } 通过日志打印发现数据的确是更新了&#xff0c;但是UI就没没办法&#xff0c;如何解决呢 Entry Component struct Page35 {// State sArray: bool…

【ajax实战09】内容管理页面——删除功能

本文章目标&#xff1a;点击删除图标实现对应数据删除 实现步骤如下&#xff1a; 一&#xff1a;将服务器端获取数据中数据id值绑定到删除图标&#xff08;重点&#xff09; 即在渲染时&#xff0c;利用自定义属性&#xff0c;为td设置id值 <td data-id "${ele.id}…

CEPH client.admin key获取

通过初始化完毕后&#xff0c;admin节点会在/etc/ceph目标下生成对应的配置文件和对应的key文件&#xff0c;通过ceph orch host add 增加的默认是没有的 如果很不幸admin节点挂了&#xff0c;怎么在其它节点使用ceph -s 命令呢 启蒙方法(比较实用) key可以通过ceph auth expor…

chunkers/maxent_ne_chunker/english_ace_multiclass.pickle 找不到

首先在这个nltk_data &#xff1a; NLTK Data官方下的数据集&#xff0c;找不到english_ace_multiclass.pic 说明缺少这个文件 : 那么在 nlp/resources/chunkers/maxent_ne_chunker/english_ace_multiclass.pickle at master teropa/nlp (github.com) 下载那两个文件 : 然…

在Vue3项目中引入Vite进行热更新

第一步&#xff1a;初始化一个Vue3项目&#xff0c;可以使用Vue CLI 在开始之前&#xff0c;我们需要确保已经安装了Vue CLI。可以通过以下命令安装Vue CLI&#xff1a; bash npm install -g vue/cli 接下来&#xff0c;使用Vue CLI初始化一个Vue3项目&#xff1a; bash vue …

基于SpringBoot的CSGO赛事管理系统

您好&#xff01;我是专注于计算机技术研究的码农小野。如果您对CSGO赛事管理系统感兴趣或有相关开发需求&#xff0c;欢迎随时联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot框架&#xff0c;Java技术 工具&#xff1a;Eclipse&a…

迈阿密色主题学科 HTML5静态导航源码

源码介绍 迈阿密色主题学科 HTML5静态导航源码&#xff0c;源码直接上传可用&#xff0c;有技术的可以拿去写个后端搜索调用百度接口&#xff0c;也可用于做引导页下面加你网址添加一个A标签就行了&#xff0c;很简单&#xff0c;需要的朋友就拿去吧 界面预览 源码下载 迈阿…

安装Anaconda + tensorflow

安装Anaconda tensorflow 下载Anaconda&#xff08;64位&#xff09; https://www.anaconda.com/download/ Anaconda3-xxxxxx-Windows-x86_64&#xff08;不要装最新的版本&#xff0c;确保Python是3.7&#xff09; 各种Anaconda老版本&#xff1a; https://mirrors.tuna.ts…

跳转的艺术:Batch文件中GOTO命令的深度解析

跳转的艺术&#xff1a;Batch文件中GOTO命令的深度解析 在批处理文件&#xff08;Batch&#xff09;的编程世界中&#xff0c;GOTO命令是实现流程控制的重要工具之一。它允许程序跳转到脚本中的特定标签位置&#xff0c;从而实现循环、条件分支等复杂的逻辑结构。本文将深入探…

EtherCAT主站IGH-- 4 -- IGH之datagram_pair.h/c文件解析

EtherCAT主站IGH-- 4 -- IGH之datagram_pair.h/c文件解析 0 预览一 该文件功能datagram_pair.c 文件功能函数预览 二 函数功能介绍datagram_pair.c 中主要函数的作用1. ec_datagram_pair_init2. ec_datagram_pair_clear3. ec_datagram_pair_process 三 h文件翻译四 c文件翻译该…

专题五:Spring源码之初始化容器上下文

上一篇我们通过如下一段基础代码作为切入点&#xff0c;最终找到核心的处理是refresh方法&#xff0c;从今天开始正式进入refresh方法的解读。 public class Main {public static void main(String[] args) {ApplicationContext context new ClassPathXmlApplicationContext(…

鸿蒙本地签名不匹配问题

连接鸿蒙手机运行项目报如下错误 这是由于本地签名和鸿蒙设备签名不匹配导致的&#xff0c;需要注释掉如下代码&#xff0c;选择file project 自动签名 勾选auto选项&#xff0c;会在build-profile.json5中生成一个签名&#xff0c;然后运行就ok了~

【Lua】脚本入门

文章目录 总述一、Lua概述二、Lua环境安装三、Lua基本语法四、Lua的库和扩展五、Lua的应用场景六、学习资源 语法1. Lua基本语法示例变量和数据类型控制结构函数 2. Lua标准库示例字符串操作数学函数文件I/O 3. Lua作为脚本扩展示例&#xff08;假设Lua嵌入在某个应用程序中&am…

vscode python格式化

插件 Black Formatter Black 默认会遵循 PEP 8 的规范&#xff0c;可配置的参数很少&#xff0c;用的人很多。 setting.json 配置&#xff0c;更改插件的每行字符数限制 {"[python]": {"editor.defaultFormatter": "ms-python.black-formatter"…

Redis命令大全(基础版)

一、基础命令 redis-server --service-start # 开启服务 redis-server --service-stop # 停止服务redis-cli # 进入redis界面redis界面操作&#xff1a; ping # 检测状态&#xff0c;返回pong证明连接正常set key value # 设置 key 字段的值为value&#xff0c;返回o…

创建一个Django用户认证系统

目录 1、Django2、Django用户认证系统User 模型&#xff1a;Authentication 视图&#xff1a;认证后端 (Authentication Backends)&#xff1a;Form 类&#xff1a;中间件 (Middleware)&#xff1a;权限和组 (Permissions and Groups)&#xff1a; 3、创建一个django用户认证系…

服务器的分类,主流服务器的应用场景

一、服务器分类 服务器可以按应用层次、体系架构、用途、外形等进行分类。以下是详细说明&#xff1a; 按应用层次分类 入门级服务器&#xff1a;这些服务器一般用于小型企业或部门的简单任务&#xff0c;如文件共享和打印服务。工作组级服务器&#xff1a;适用于中小型企业&…

html2canvas相关(生成图片)

根据 DOM 生成对应的图片 function export3png(row, type null) { html2canvas( document.querySelector(#bug), //要生成图片的dom节点 {useCORS: true, }) 图片跨域 .then((canvas) > { const saveUrl canvas.toDataURL(image/png) Canvas对象生成base64代码 co…