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 lowc?dst(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.pswp.cn/web/37881.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/37881.shtml
英文地址,請注明出處:http://en.pswp.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…