opencv學習筆記(一)

2022-05-04 07:12:09 字數 1987 閱讀 4748

灰度圖: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學習筆記(一)

對話方塊介面上直接顯示影象 含opencv內容 第一部分 建立顯示影象區域 1 建立對話方塊工程mymfc 2 在第三步中選擇 as a statically linked library 3 設定opencv環境變數 4 在mymfc.h檔案中新增如下 include cv.h include h...

Opencv學習筆記 一

一 opencv的命名空間 opencv中的c 類和函式都是定義在命名空間cv中的,有兩種方法訪問 在 開頭加上以下這句 using namespace cv 開頭一般可寫成 include includeusing namespace cv using namespace std 二 mat類的使...

OpenCV學習筆記(一)

opencv是乙個開源的計算機視覺庫,設計目標是執行速度進,盡量快,主要關注實時應用。構建乙個簡單易用的計算機視覺框架,以幫助開發人員更見便捷地設計複雜的計算視覺相關應用程式。opencv當初的三大目標 為基本的視覺應用提供開放且優化的源 以促進視覺研究的發展。能有效地避免 閉門造車 通過提供乙個通...