openCV中的矩陣建立和釋放

2021-06-21 13:40:47 字數 1665 閱讀 5119

分類: 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...