第一天 Mat類基礎

2021-08-04 14:20:33 字數 2689 閱讀 7901

(一)、opencv常用資料結構

1)、point類

point類資料結構表示二維座標系的點,由座標x, y指定的2d點,如:

point pt;

pt.x = 20;

pt.y = 10;

其他型別:

point

point2d

point2f

point2i

point3d

point3f

point3i

2)、rect類

rect類用來表示矩形,成員有x,y, width, height,常用的成員函式:

size()返回值size表示大小 tl()返回左上角座標

area()返回矩形面積 br()返回右下角座標

contains(point)判斷點是否在矩形內

inside(rect)判斷矩形是否在該矩形內

求兩個矩形的交集並集:

rect rect = rect1 & rect2;

rect rect = rect1 | rect2;

3)、size類

size表示區域大小,常用建構函式size(int _width, int _height)

4)、scalar類

scalar()表示具有四個元素的陣列,大量用來傳遞畫素值,如rgb顏色,一般形式:

scalar(double b, double g, double r, double alpha)

如果用不到第四個則表示scalar(b, g, r), 其中:

b—表示藍色分量,g—表示綠色分量

r—表示紅色分量,alpha—表示透明度

注意:scalar表示顏色順序為bgr

scalar(255, 0, 0) ----表示純藍色

scalar(0, 255, 0) ----表示純綠色

scalar(0, 0, 255) ----表示純紅色

scalar(255, 255, 0) ----表示青色

scalar(0, 255, 255) ----表示黃色

(二)、mat類

1)、基礎影象容器mat

我們可以借助很多方法來獲取影象,但是儲存到數字裝置中記錄的確實每個畫素點的數值。

opencv2.x以上版本提供mat結構來儲存影象,優化了記憶體管理,不用手動開闢空間,也不必在不使用的時候立即釋放,減少記憶體洩漏的風險。

2)、mat類簡介:

mat是乙個類,由兩個資料部分組成:矩陣頭(大小,通道,資料型別等)和資料塊(畫素值)。

mat頭部屬性如:rows,cols,channels,data

data是乙個指向資料塊的指標,可以用如下方法判斷影象是否為空:

if(!img.data) //影象資料為空

return;

3)mat類操作

a、mat類建立

mat img; //建立無初始化矩陣

mat img1(20,10,cv_8uc1); //建立20行10列型別為8位的單通道矩陣

mat img2(size(20,10),cv_8uc3); //建立20*10型別為8位的3通道矩陣

mat img3(20,10,cv_8uc3,scalar(0,255,0)); //建立10*20型別為8位的3通道矩陣

mat img4(20,10,cv_8uc1,scalar(255)); //建立10*20型別為8位的單通道矩陣

mat img5(img4);

b、mat類賦值拷貝

mat img(100, 200, cv_8uc3, scalar(0,255,0));
和原影象指向同一塊資料:

mat img2(img); 

mat img3 = img;

原影象的副本:

mat img4 = img.clone();

mat img 5;

img.copyto(img5);

c、常用顏色空間

rbg顏色空間、hsv/hls顏色空間、lab顏色空間

轉換所用函式cvtcolor(src, dst, code)

cv_bgr2gray、cv_bgr2hsv、cv_bgr2lab

(三)、顏色

rbg顏色空間,r/g/b取值範圍[0,255]

hsv/hls顏色空間,h取值範圍[0,360],s/v取值範圍[0,1]

lab顏色空間,l取值範圍[0,100],a/b取值範圍[127,-128]

android基礎 第一天

一 android體系結構 密碼 d7g8 二 兩種虛擬機器的比較 密碼 8gyf 三 sdk介紹 密碼 xqam 四 eclipse環境搭建 密碼 yt4z 五 模擬器的介紹 密碼 j7wg 六 第乙個android專案 上 密碼 jnz1 七 第乙個android專案 下 密碼 i6td 八 a...

Vue基礎第一天

foreach function value,index 4 1.filter 過濾器 filter function item,index let arr 1,2,3,4,5,arr.filter function item,index 4 2.map 對映 對於陣列的對映map function...

js基礎第一天

js的介紹 js是什麼 js是一門指令碼語言 解釋性語言 動態型別語言 基於物件語言 編譯語言 需要把 翻譯成計算機所認知的二進位制語言,才能夠執行 指令碼語言 不需要編譯,直接執行 常見的指令碼語言 t sql,cmd js的作用 解決使用者和瀏覽器之間的互動問題 的寫法 宣告乙個物件 var o...