OpenCV Mat類與顏色空間

2022-06-29 17:09:14 字數 1801 閱讀 9379

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

//eg

point p;

p.x=20,p.y=30;

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

size()返回值size表示大小

area()返回矩形面積

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

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

tl返回左上座標

br返回右下座標

//求兩個矩形的交集並集

rect rect = rect1 & rect2;

rect rect = rect1 | rect2;

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

scalar()表示有4個元素的陣列,大量用來傳遞畫素值,如rgb顏色。一般形式為scalar(double b,double g,double r,double alpha).alpha表示透明度。scalar(255,0,0)表示藍。

基礎圖象容器mat。mat類由兩個資料部分組成,矩陣頭(大小,通道,資料型別等)和資料塊(畫素值)。

mat頭部屬性比如rows,cols,channels,data。data為指向資料塊的指標。

//mat類建立

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

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

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

mat img3(20,10,cv_8uc1,scalar(0,255,0));//建立大小為10*20的8位單通道矩陣。

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

mat img5(img4);//將img4賦值給img5,共享資料物件。img4改變img5也會改變。

//mat類賦值拷貝

mat img(20,10,cv_8uc1,scalar(0,255,0));

//img3和img2跟原影象指向同一資料塊。

mat img2(img);

mat img3 = img;

//img4和img5是原圖的副本。

mat img4 = img.clone();

mat img5;

img.copyto(img5);

rgb顏色空間、hsv/hls顏色空間、lab顏色空間。

hsv主要做顏色檢測,避免亮度干擾。h色表[0,360],s飽和度[0,1],v亮度[0,1]。

lab主要做亮度檢測,l亮度[0,100],a、b都表示顏色[127,-128]。

轉換函式cvtcolor(src, dst, code).

opencv2:cv_bgr2graycv_brg2hsvcv_bgr2lab

opencv3:color_bgr2graycolor_brg2hsvcolor_bgr2lab

顏色空間及顏色空間轉換

1.1 顏色空間介紹 rgb 顏色空間是大家最熟悉的顏色空間,即三基色空間,任何一種顏色都可以由該三種 顏色混合而成。然而一般對顏色空間的影象進行有效處理都是在 hsv 空間進行的,hsv 色 調 hue,飽和度 saturation,亮度 value 是根據顏色的直觀特性建立的一種顏色空間,也稱六...

OpenCV Mat類矩陣元素訪問

補充一篇最近使用opencv的學習,關於處理和人臉檢測的函式呼叫。上次部落格中寫了使用最新版本2.4.3中,haar detection執行正常,但是無法找到任何人臉。最近使用了新的c 類的函式呼叫,不再用cvrelease.但是仍舊只有lbp detection工作正常,所以使用了lbp。相信大多...

顏色空間轉換

話不多說,說明anything include include using namespace std using namespace cv int main int argc,char argv printf n 釋放相應的影象記憶體空間 cvreleaseimage src cvreleasei...