1仰挣、Mat mat;
可以運用mat=Mat::zeros(r,c,type)來進行初始化,Mat類里面的zeros和matlab中類似拂铡,職責(zé)就是創(chuàng)建相應(yīng)大小矩陣并返回实柠,type可以用CV_8UC1,CV_8UC3等
也可以用mat.create(r,c,type)進行初始化
調(diào)用mat.clone()可以復(fù)制當(dāng)前的mat矩陣數(shù)據(jù)
2橱脸、可以自己定義顏色
#define ColorB (Scalar(255,0,0))
#define ColorG (Scalar(0,255,0))
#define ColorR (Scalar(0,0,255))
3抒和、mat.channels和mat.step屬性,分別代表通道數(shù)汗菜,和每一行像素的長度
4让禀、對mat中(r,c)的像素進行訪問和賦值挑社,對于單通道圖像可以
????? mat.data[r*mat.step+c]? 或者 mat.at<unsigned char>(r,c)??? //unsigned char == uchar
????? 對于三通道訪問BGR則是
? ? mat.data[r*data.step+c+0]、mat.data[r*data.step+c+1]巡揍、mat.data[r*data.step+c+2]
? mat.at<Vec3b>(r,c)[0]痛阻、mat.at(r,c)[1]、mat.at(r,c)[2]
5吼肥、畫線畫圓可以用line函數(shù)录平、circle函數(shù), 畫橢圓可以用ellipse函數(shù)
6、在Opencv 中調(diào)用cvSub函數(shù)時缀皱,如果相減的兩個矩陣都是CV_8UC1,那么小于0的數(shù)在函數(shù)中會自動置零斗这。而不是普通對于無符號數(shù)的相減,會負(fù)數(shù)會取反碼啤斗。
7表箭、在Opencv 1.0種,可以運用cvGet2D,cvSet2D進行對矩陣數(shù)值操作钮莲,也可以運用mat.data.ptr獲取數(shù)據(jù)區(qū)的首指針免钻,然后進行數(shù)據(jù)獲取。注意崔拥,cvmGet极舔,cvmSet,只可以運用于CV_32FC1或者CV_64FC1的二維矩陣中存取值。不可用于CV_8UC1等链瓦。
int nn = 0;
for (int i = 0; i<5; i++)
{
unsigned char * p = (unsigned char*)(mat1->data.ptr+i*mat1->step);
for (int j = 0; j<5; j++)
? {
? ?*(p+j) = nn;
? ?nn++;
? ? }
}
8拆魏、
驢兒先生筆記,不斷更新中zzz...