opencv儲存Mat為xml並讀入matlab中

2021-08-15 05:47:16 字數 1187 閱讀 5161

工作中需要計算cv::mat的各種投影,並繪製曲線,這種工作用c++來寫實在是惱火,想著用matlab來著,於是搜尋了一下大家的做法,參考以下:

經過一番嘗試,鏈結1的方法可成功將opencv的mat寫入xml中,然而matlab從xml讀取資料入矩陣始終有問題,鏈結2執行提示有問題,結合二者,並經過自己修改,給出以下方法。

1.opencv中的cv::mat寫入xml中

此部分參照鏈結1,使用filestorage。

void writemattoxml(const cv::mat & mat, const std::string xmlname)

2.matlab讀取xml檔案,寫入mat

%function [ pic2 ] = xml2mat( xml_name )

clear;

%讀取opencv中xml檔案,表示的是矩陣。

xmldoc = xmlread('swt.xml');

%得到矩陣的行數

row = xmldoc.getelementsbytagname('rows').item(0).getfirstchild.getdata;

%得到矩陣的列數

col = xmldoc.getelementsbytagname('cols').item(0).getfirstchild.getdata;

row = str2num(row);%讀入是string型別,轉為數字;

col = str2num(col);%同上

%此時讀入的是一串字元

histstring =char(xmldoc.getelementsbytagname('data').item(0).getfirstchild.getdata);

x1 =strtrim(histstring);%去除首位空格,一般在首位有空格

x2 = strsplit(x1);%按照空格切分字元

x3 = str2double(x2);%轉為double型

pic1 = reshape(x3,col,row);%轉為(col,row)尺寸的mat

pic2 = pic1';%求轉置,這是因為xml檔案中的資料是一列一列寫入的

%imshow(pic2,);

%end

opencv 儲存mat矩陣的資料

影象處理的過程中,有時候會需要儲存資料。之前,用的比較多的是imwrite函式,但其只能儲存整數資料,且需作為影象格式。當需要儲存浮點資料或xml yml檔案時,我們可以使用filestorage類。1 儲存mat矩陣 filestorage fs xuchao.xml filestorage wr...

opencv建立Mat物件

在opencv中引入了mat類。mat類是乙個非常優秀的影象類,它同時也是乙個通用的矩陣類,可以用來建立和操作多維矩陣。mat類裡面定義了許多建構函式,可以很方便地根據要求建立mat物件。常使用的建構函式有 1 mat mat 無引數建構函式 2 mat mat int rows,int cols,...

OpenCV 二 Mat簡介(原理)

在對影象進行處理時,首先需要將影象載入到記憶體中,而mat就是影象在記憶體中的容器,管理著影象在記憶體中的資料。mat是c 的乙個類,由於opencv2中引入了記憶體自動管理機制,所以不必手動的為mat開闢記憶體空間以及手動的釋放記憶體。mat中包含的資料主要由兩個部分構成 1.矩陣頭 矩陣尺寸 儲...