[opencv]影像處理的基礎資料型別 (Elementary Data Type)以及通道和維度理解

來源:互聯網
上載者:User
鑒於本人著實安不下心來看書,於是乎找了個好的與書同步的視頻來看

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網站的視頻~   

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.