談OpenCV的資料結構Mat,是如此強大

2021-06-14 05:52:37 字數 933 閱讀 5775

還是乙個實時性要求的程式最近把我弄得有些上火。為了提高**執行的速度,我也是又新啃東西學了。由於我**裡使用了vector,網上搜來搜去有人說vector慢,又有人說stl裡的sort排序速度是我等常人不能企及的,有人說要少resize,這個重新分配記憶體非常耗時,又有人說要用swap來徹底刪除不要的記憶體空間。帶著這麼多疑問,我實在不知道我程式慢的原因。於是乎閱讀了《effective stl》,這書挺深的,粗淺讀讀,先把自己急著弄清楚的以上各問題弄懂。再看程式,做了些優化,速度還是提高不多,頭開始大了

我的解決辦法是用我上一講提到的gettickcount、gettickfrequency函式分析我**的執行時間,遇到的問題是下面這句非常耗時

[cpp]view plain

copy

vectorint

>>test = vectorint

>>(10000, vector<

int>(10, 0));  

10000*10只是我要開闢的空間,不知道怎麼用reserve函式開闢,

這句執行了大概100ms

。今天再看這段**,發現我太傻了,何必要用vector>呢,完全可以用opencv自帶的mat來解決啊,於是把上面這句改寫如下

[cpp]view plain

copy

mat test1 = mat_<

int>::zeros(10000, 10);  

結果只需要0.2ms!!!

同志們,stl在mat面前都顯得如此無力啊,有木有啊!我決定花費幾天的時間再好好讀讀reference的core的部分,來吃透opencv的資料結構。而且感覺mat跟stl的相容性很好,也有push_back,pop_back這樣的操作,所以啊,同志們,千萬別把mat只當做是顯示用的,它是很強大的資料結構,用了它,可以事半功倍,誰用誰知道!~~

再談OpenCV資料結構Mat詳解

我記得開始接觸opencv就是因為乙個演算法裡面需要2維動態陣列,那時候看core這部分也算是走馬觀花吧,隨著使用的增多,對mat這個結構越來越喜愛,也覺得有必要溫故而知新,於是這次再看看mat。mat最大的優勢跟stl很相似,都是對記憶體進行動態的管理,不需要之前使用者手動的管理記憶體,對於一些大...

OpenCV中Mat資料結構使用舉例

mat mtx img1 iplimage mat,新的mat型別與原來的iplimage型別共享影象資料,轉換只是建立乙個mat矩陣頭 or mat mtx img1 cvmat oldmat mtx mat cvmat 只是建立矩陣頭,而沒有複製資料,oldmat不用手動釋放 cv assert...

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...