OPENCV 1 學習筆記

2021-07-29 19:21:44 字數 1989 閱讀 9826

灰度圖:2維矩陣

彩色圖:3維矩陣

ps:目前大部分裝置都是用無符號 8 位整數(型別為 cv_8u)表示畫素亮度

mat類定義:

class cv_exports mat

;

單通道影象:元素型別一般為 8u(即 8 位無符號整數),也可以是 16s、32f 等;這些型別可以直接用 uchar、short、float 等 c/c++語言中的基本資料型別表達

多通道影象:如rgb彩色影象,需要用三個通道來表示。在這種情況

下,如果依然將影象視作乙個二維矩陣,那麼矩陣的元素不再是基本的資料型別。可以採用vec類,表示乙個向量。如8u型別的rgb彩色影象使用vec3b。

對於 vec 物件,可以使用符號如運算元組般讀寫其元素,如:

vec3b color; //用 color 變數描述一種 rgb 顏色

color[0]=255; //b 分量

color[1]=0; //g 分量

color[2]=0; //r 分量

at()函式:實現讀取矩陣中的某個畫素,或者對某個畫素進行賦值操作。

uchar value = grayim.at(i,j);//讀出第 i 行第 j 列畫素值

grayim.at(i,j)=128; //將第 i 行第 j 列畫素值設定為 128

對影象進行遍歷,分別對單通道的 grayim 以及 3 個通道的 colorim,然後對兩個影象的所有畫素值

進行賦值,最後現實結果

mat grayim(600, 800, cv_8uc1);

mat colorim(600, 800, cv_8uc3);

//遍歷所有畫素,並設定畫素值

for( int i = 0; i < grayim.rows; ++i)

for( int j = 0; j < grayim.cols; ++j )

grayim.at(i,j) = (i+j)%255;

//遍歷所有畫素,並設定畫素值

for( int i = 0; i < colorim.rows; ++i)

for( int j = 0; j < colorim.cols; ++j )

//顯示結果

imshow("grayim", grayim);

imshow("colorim", colorim);

waitkey(0);

使用迭代器遍歷:

mat grayim(600, 800, cv_8uc1);

mat colorim(600, 800, cv_8uc3);

//遍歷所有畫素,並設定畫素值

matiterator_grayit, grayend;

for( grayit = grayim.begin(), grayend =

grayim.end(); grayit != grayend; ++grayit)

*grayit = rand()%255;

//遍歷所有畫素,並設定畫素值

matiterator_colorit, colorend;

for( colorit = colorim.begin(), colorend =

colorim.end(); colorit != colorend; ++colorit)

//顯示結果

採用指標:

mat grayim(600, 800, cv_8uc1);

mat colorim(600, 800, cv_8uc3);

//遍歷所有畫素,並設定畫素值

for( int i = 0; i < grayim.rows; ++i)

//遍歷所有畫素,並設定畫素值

for( int i = 0; i < colorim.rows; ++i) }

//顯示結果

學習OpenCV 1 開發環境的搭建

注意 本文使用環境和工具 windows10 64位專業版 visualstudio2013 opencv2.4.11 筆者經過測試,使用以下環境均可 作業系統 win7,win8,win8.1 編譯器 visualstudio2010,2013,2015 opencv2.4.x 如果使用openc...

Opencv2與opencv1的區別

一 opencv2與opencv1的區別 opencv1.0 版本於2006年面世,主要基於c語言。2009年發布opencv2,主要基於c 此時opencv庫被劃分成多個模組,這些模組被編譯成庫檔案後,位於lib資料夾中。主要有以下模組 版本1的結構見我的這篇blog opencv core 模組...

學習openCV 1 關於通道和灰度的解釋

關於通道的解釋 1 比較通俗易懂的解釋是 灰度圖的通道數為1,彩色圖的通道為3。基本上,描述乙個畫素點,如果是灰度,那麼只需要乙個數值來描述它,就是單通道。如果乙個畫素點,有rgb三種顏色來描述它,就是三通道。2 4通道通常為rgba,在某些處理中可能會用到。2通道影象不常見,通常在程式處理中會用到...