工作中需要計算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.矩陣頭 矩陣尺寸 儲...