灰度圖: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當初的三大目標 為基本的視覺應用提供開放且優化的源 以促進視覺研究的發展。能有效地避免 閉門造車 通過提供乙個通...