CvMat的宣告及元素訪問總結

2021-06-06 05:52:49 字數 957 閱讀 5279

最近處理矩陣資料,但是訪問cvmat元素時總會出現錯誤,所以重新翻了一下書,查詢了一些資料,這都屬於最基本的東西。

《opencv教程基礎篇》p48

1、分配矩陣 cvmat *prepoint = cvcreatemat(1, 2, cv_32fc1);//行,列,元素型別

而且用指標訪問元素賦值可以成立

1) prepoint->data.fl[0]=111;

prepoint->data.fl[1]=10;

2)  int n=prepoint->cols;

float *data=prepoint->data.fl;

data[i*n+j]=***;

2、  這樣使用會出錯:會報告類似越界的錯誤。

cvmat cvmat(1, 2, cv_32fc1)

prepoint.data.fl[0]=111;

prepoint.data.fl[1]=10; 

cvmat cvmat( int rows, int cols, int type, void* data=null );

rows 矩陣行數 

cols 列數. 

type 元素型別(見createmat). 

data 可選的分配給矩陣頭的資料指標 . 

函式 cvmat 是個一快速內連函式,替代函式 cvinitmatheader. 也就是說它相當於: 

cvmat mat;

cvinitmatheader( &mat, rows, cols, type, data, cv_autostep );

解決方法是:初始化矩陣,即將double a[2]作為data引數傳遞進去。

1)cvmat prepoint =cvmat(1,2,cv_64fc1,a);

2) cvmat prepoint;

cvinitmatheader(&prepoint,1,2,cv_64fc1,a);

CvMat矩陣資料訪問方法總結

cvmat矩陣資料結構是opencv的基礎資料型別,對於影象處理這種密級型運算,經常需要訪問,修改,設定其元素的值。opencv提供了很多優良的函式,能夠很簡單的實現上述功能。在 學習opencv 一書中,作者分別就簡單的方法,麻煩的方法,和恰當的方法對相關函式進行了講解,講得比較清晰。本文主要講解...

「cv Mat 」容器的使用及示例

cv mat 是一種矩陣,包括多通道和單通道.可以轉換為容器 container 並使用容器的相關操作.需要用到 cv mat 簡單的說就是,現在你的資料是mat型別的矩陣,需要以容器的形式使用它,就需要用到 cv mat 容器。如 cv mat image cv imread heels.jpg ...

go學習筆記 七 Map宣告 元素訪問及遍歷

m map string int m1 map string int m1 one 1 m2 make map string int,10 initial capacity 在訪問的key不存在時,仍會返回零值,不能通過返回nil來判斷元素是否存在 func testaccessnotexistin...