opencv之基礎篇(關於Mat類的使用)

2021-08-07 18:44:07 字數 1012 閱讀 7797

*opencv中常見的與影象操作有關的資料容器有mat,cvmat和iplimage,這三種型別都可以代表和顯示影象,但是,mat型別側重於計算,數學性較高。而cvmat和iplimage型別更側重於「影象」。在opencv2.0之前,opencv是完全用c實現的,但是,iplimage型別與cvmat型別的關係類似於物件導向中的繼承關係。實際上,cvmat之上還有乙個更抽象的基類----cvarr,這在源**中會常見。使用這兩個結構的問題是記憶體需要手動管理,開發者必須清楚的知道何時需要申請記憶體,何時需要釋放記憶體,因此在新版本的 opencv 中引入了能自動管理記憶體的mat 類。

mat是乙個優秀的影象類,也是乙個優秀的矩陣類。

#include #include #include #include using namespace std;

using namespace cv;

int main()

return 0;

}

cv::mat img;    

cvmat cvmatimg = img;

iplimage iplimg = img;

ps:需要特別注意的是,型別轉換後,iplimage 和 cvmat 與 mat 共用同一矩陣資料,而iplimage 和 cvmat 沒有引用計數功能,如果上例中的 img 中資料被釋放, iplimg 和 cvimg 也就失去了資料。因此要牢記不可將 mat 物件提前釋放。

mat img(iplimg, true);mat 類有兩個建構函式,可以實現 iplimage 和 cvmat 到 mat 的轉換。這兩個函式都有乙個引數copydata。如果copydata的值是false,那麼mat將與iplimage或cvmat 共用同一矩陣資料;如果值是 true,mat 會新申請記憶體,然後將 iplimage或cvmat 的資料複製到 mat 的資料區。

OpenCV基礎篇之Mat資料結構

filename matobj.cpp author xiahouzuoxin 163.com version v1.0 date thu 15 may 2014 09 12 45 pm cst brief include include include using namespace std us...

OpenCV基礎篇之Mat資料結構

filename matobj.cpp author xiahouzuoxin 163.com version v1.0 date thu 15 may 2014 09 12 45 pm cst brief copyright c micl,ustb include include include ...

OpenCV之Mat類詳解

學習mat矩陣,了解影象的儲存和mat矩陣的使用 2001年opencv剛出來的時候,是基於c語言介面而建。為了在記憶體 memory 中存放影象,當時採用名為 iplimage 的c語言結構體。其中最大的不足要數手動記憶體管理,使用者要為開闢和銷毀記憶體負責。一旦 開始變得越來越龐大,會越來越多地...