分類: opencv 學習
2012-02-19 16:05
1862人閱讀收藏
舉報 null
floatc
學習opencv中對於其矩陣總是搞混,現在通過學習,算是有一點理解,同大家分享一下
一矩陣的建立
(1)cvmat* cvcreatemat( int rows, int cols, int type );
建立矩陣,並為其分配記憶體。
cvmat* mycvmat=cvcreatemat(10,10,cv_32fc1);與下面相等
cvmat* mat2=cvcreatematheader(10,10,cv_32fc1);//不為資料分配記憶體
cvcreatedata(mat2);
rows矩陣行數。cols矩陣列數。type矩陣元素型別。 通常以 cv_《位元數》(s|u|f)c《通道數》型式描述,例如:
cv_8uc1 意思是乙個8-bit 無符號單通道矩陣, cv_32sc2 意思是乙個32-bit 有符號二個通道的矩陣。
函式 cvcreatemat 為新的矩陣分配頭和下面的資料,並且返回乙個指向新建立的矩陣的指標。是下列操作的縮寫型式:
(2)cvmat* cvcreatematheader( int rows, int cols, int type );
建立矩陣頭,不為資料分配記憶體。如果需要分配資料的話用cvcreatedata(cvmat* mat)只負責資料記憶體的分配
cvmat* mat2=cvcreatematheader(10,10,cv_32fc1);//不為資料分配記憶體
cvcreatedata(mat2);
(3)cvmat* cvinitmatheader( cvmat* mat, int rows, int cols, int type, void* data cv_default(null), int step cv_default(cv_autostep) );
建立矩陣頭。data可選的,將指向資料指標分配給矩陣頭.step排列後的資料的整個行寬,預設狀態下,使用step的最小可能值。也就是說預設情況下假定矩陣的行與行之間無隙.
函式 cvinitmatheader 初始化已經分配了的 cvmat 結構. 它可以被opencv矩陣函式用於處理原始資料。
double a = ;
cvmat ma;
cvinitmatheader( &ma, 3, 4, cv_64fc1, a );//只分配矩陣頭
cvinitmatheader( &ma, 3, 4, cv_64fc1);//不分配空間
(4)mat
cvmat cvmat( int rows, int cols, int type, void* data cv_default(null))
初始化矩陣頭。同(3)。float a=;
cvmat mat1=cvmat(2,2,cv_32fc1,a);
二矩陣的釋放
(1)releasemat
刪除矩陣
void cvreleasemat( cvmat** mat );
mat雙指標指向矩陣.
函式cvreleasemat 縮減矩陣資料參考計數並且釋放矩陣頭 :
if( *mat )
cvdecrefdata( *mat );
cvfree( (void**)mat );
OpenCV 矩陣的建立與釋放
矩陣有多種建立方法。最常見的方法是用cvcreatemat 它由多個原函式組成,如cvcreatematheader 和cvcreatedata cvcreatematheader 函式建立cvmat結構,不為資料分配記憶體,而cvcreatedata 函式只負責資料的記憶體分配。第三中方法是用函式...
物件的建立和釋放
1 new和delete基本語法 1 new和delete基本語法 1 在軟體開發過程中,常常需要動態地分配和撤銷記憶體空間,例如對動態鍊錶中結點的插入與刪除。在c語言中是利用庫函式malloc和free來分配和撤銷記憶體空間的。c 提供了較簡便而功能較強的運算子new和delete來取代mallo...
Python中矩陣建立和矩陣運算
矩陣建立和矩陣運算 矩陣建立 1 from numpy import a1 array 1,2,3 a2 mat a1 矩陣與方塊列表的區別如下 建立乙個2 4的1矩陣,預設是浮點型的資料,如果需要時int型別,可以使用dtype int 3 data5 mat random.randint 2,8...