opencv Mat資料的三種標準訪問方式

2021-08-18 05:42:30 字數 1369 閱讀 9798

將幾種常用訪問方式比喻成普通青年、文藝青年、暴力青年

方式1: at(i,j)訪問(普通青年)

例:單通道

int rows = 100; // height

int cols = 200; // width

mat img1(rows , cols , cv_32fc1);  

for (int i=0; i(i,j) = 3.2f;  

}  } 

type的對應表:

mat_---------cv_8u

mat-----------cv_8s

nat_---------cv_16s

mat_--------cv_16u

mat_-----------cv_32s

mat_----------cv_32f

mat_--------cv_64f

例:多通道

int rows = 100; // height

int cols = 200; // width

mat img1(rows , cols , cv_8uc3);  

for (int i=0; i(i,j)[0]= 3.2f;  // b 通道

img1.at(i,j)[1]= 3.2f;  // g 通道

img1.at(i,j)[2]= 3.2f;  // r 通道

}  }            

注意:core.hpp中有關於vec3b等型別的定義:

typedef vecvec2b;

typedef vecvec3b;

typedef vecvec4b;

typedef vecvec2i;

typedef vecvec3i;

typedef vecvec4i;

方式2:ptr(i) [j] 方式(文藝青年)

mat的ptr方法,返回<>中模板指定型別的指標,

類似於陣列訪問,得到

例:單通道

int rows = 100; // height

int cols = 200; // width

mat img1(rows , cols , cv_32fc1); 

for (int i=0; i(i);  

for (int j=0; j例: 多通道

int rows = 100; // height

int cols = 200; // width

mat img1(rows , cols , cv_32fc3); 

for (int i=0; i(i);  

for (int j=0; j方式3:img.data + step[0]*i + step[1]*j 方式

//該種方式暫不考慮

三種傳遞資料的方法

一 通過靜態變數傳遞 定義乙個類mydata,在裡面建立乙個變數 public static string name 在乙個servlet中接收view頁面傳過來的資料,如 string username request.getparamter username 通過上乙個類中的靜態變數儲存user...

hibernate資料的三種狀態

hibernate 資料持久化的三種狀態 一 瞬時物件 transient object 使用new操作符初始化的物件不是立刻就持久的。它們的狀態是瞬時的,也就是說它們沒有任何跟資料庫表相關聯的行為,只要應用不再引用這些物件 不再被任何其它物件所引用 它們的狀態將會丟失,並由垃圾 機制 二 持久化物...

Vmware WorkStation的三種聯網方式

眾所周知,vmware是windows系統下流行的虛擬機器軟體,可以使使用者在一台真實的主機上虛擬出多個不同系統的虛擬機器。虛擬機器使用者也希望虛擬機器能像真實的主機一樣連線網路。下面簡要介紹vmware的3種聯網方法。僅主機模式 only host 這種方式下的虛擬機器不能訪問區域網內的其他主機,...