鑒於本人著實安不下心來看書,於是乎找了個好的與書同步的視頻來看
http://www.opencvchina.com/thread-103-1-1.html
這個視頻講的很不錯~很詳細 閑話少說 說說今天學到的吧~
在opencv中基本用到的資料類型:
CvPoint:表示映像中的點 CvPoint2D32f:二維空間中的點 CvPoint3D32f:表示映像中三維空間的點
他們的建構函式式cvPoint 是內嵌函式,只把C小寫了哦~
nCvSize:映像的尺寸
CvSize2D32f:如果想用浮點型CvRect 表示映像的部分地區
CvScalar包含4個浮點成員,可以用來表示B,G,R,alpha建構函式:cvScalar cvRealScalar cvScalarAll 第一個就是正常的,第二個是設定單通道,其他為0;第三個是全部設定成一個數
IplImage可以視為從CvMat派生的。CvArr可以視為抽象類別,雖然這是C的,但是可以這麼理解,為了增加程式的靈活性吧通道與維度
float data[18] = {30,60,40,60,50,40,67,88,55,33,22,97,59,69,32,46,25,45,};CvMat mat;cvInitMatHeader(&mat,3,3,CV_32FC2,data);//double have3*3 elements//cvInitMatHeader(&mat,3,6,CV_32FC1,data);//single islefor(int y = 0;y<mat.rows;y++){for(int x = 0;x<mat.cols ;x++){//float value = cvGetReal2D(&mat,y,x);//single//printf("%f ",value);CvScalar value = cvGet2D(&mat,y,x);//doubleprintf("(%f %f)",value.val[0],value.val[1]);//double every point have two values}printf("\n");}cvInitMatHeader(&mat,3,6,CV_32FC1,data);//single isle上面這句話就是建立一個3行六列的單通道矩陣,結果是每行六個值,分別表示每個座標的顏色什麼的吧,但是是單通道,所以這個點上只有一個值哦~cvInitMatHeader(&mat,3,3,CV_32FC2,data);//double have3*3 elements這個是雙通道的,童鞋們可以看出來和單通道神馬區別吧~這個是雙通道的二維矩陣,表示的元素或者像素的個數是3*3個,而每個元素座標點上有兩個值,是雙通道~運行結果是這樣的:總結一下通道和維度:1.通道是描述每個元素的資料的個數;維數是資料的儲存方式,與通道無關2.每個N通道的M維資料可以分解為N個單通道的M維資料,以簡化運算~這是我的理解~也感謝opencvChina網站的視頻~