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 中的深拷貝和淺拷貝類似,深複製建立了乙個讀取部分的矩陣頭,而淺複製只...