opencv中Mat資料型別的應用

2021-07-25 14:01:46 字數 1978 閱讀 5115

1.初始化

1) cv::mat m(3,4,cv_32f,cv::scalar(0));

2) mat mat =mat::zeros(color.rows,color.cols,cv_8uc3); //ones

3) unsigned char* data;

cv::mat img(height, width, cv_8uc3, (unsigned char*)data);

2.資料訪問

1) 彩色影象(3維的)

unsigned char* data;

mat mat(height,width,cv_8uc3);   

for (int row=0; rowvec3b>(row,col)[2-k] = data[i++]; }}

}

2)灰度影象(1維的)

unsigned char* data;

mat mat(height,width,cv_8uc3);   

for (int row=0; row(row,col)= data[i++]; }}

}

3.複製整副影象、區域影象資料

1). 整副

mat.copyto(frame);//frame = mat;  拷貝mat

的資料區到frame

中,在拷貝資料前會有一步:frame

.create(this->size , this->type)

mat frame = mat.clone()

; //frame = mat

完全拷貝,把mat

中的所有資訊拷貝到frame

2)區域

1) mat mat = image(roi); 

4. 拷貝時指定行列

//cv::mat r(3,3,cv_32fc1); //有資料的

//cv::mat t(3,1,cv_32fc1);

cv::mat m(3,4,cv_32fc1);

1)

r.copyto(m.rowrange(0,3).colrange(0,3));   //r的3行3列資料拷貝到m對應的3行3列中, rowrange(0,3) ——0、1、2行

t.copyto(m.rowrange(0,3).col(3));//3*1

2)

r = m.rowrange(0,3).colrange(0,3);    //與1)剛好相反

t = m.rowrange(0,3).col(3);//3*1  

5) 格式轉換

mat img1(640,480, cv_8uc1);

img.convertto(img1, cv_8uc1);    //將img轉換到cv_8uc1格式

opencv中的Mat資料型別的說明

在opencv的高版本中均使用mat類來儲存影象資料或者矩陣資料。關於mat類我們要知道 1.不必再手動為其開闢空間 2.不必再不需要的時候釋放空間 3.在函式中是可以傳遞影象的。4.opencv應用了計數的機制,思路就是讓每乙個mat物件都有自己的資訊頭,但共享乙個矩陣通過矩陣指標指向同一位址而實...

opencv中資料型別

cv 32fc1和cv 64fc1,前者是32位資料,後者是64位資料。因此前者型別的資料必須以指向32位資料型別的指標訪問,否則會報錯,而後者型別的資料必須以指向64位資料型別的指標訪問,否則會報錯。也就是說,你如果用cv 32fc1,那麼後面對該矩陣的輸入輸出的資料指標型別都應該是float,這...

opencv中mat型別資料的操作和記憶體

mat是opencv中的一種矩陣資料型別,用來儲存影象。mat類包含兩個資料部分 矩陣頭和指向儲存所有畫素值的矩陣的指標。矩陣頭包含矩陣的大小尺寸 儲存方法 儲存位址等。在opencv中,對矩陣mat的複製分為深複製和淺複製,與c 中的深拷貝和淺拷貝類似,深複製建立了乙個讀取部分的矩陣頭,而淺複製只...